{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "5d037743",
   "metadata": {
    "id": "5d037743"
   },
   "source": [
    "# Exploring MIMIC-IV"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fbae8e9b",
   "metadata": {
    "id": "fbae8e9b"
   },
   "source": [
    "Let's explore the data in the MIMIC-IV Waveform Database.\n",
    "\n",
    "Our **objectives** are to:\n",
    "- Become familiar with the file structure of the database.\n",
    "- Find out which signals are present in selected records and segments, and how long the signals last.\n",
    "- Search for records that contain signals of interest.\n",
    "- Load waveforms using the WFDB toolbox.\n",
    "- Plot one minute of signals from a segment of data\n",
    "- Look more closely at the shape of the PPG pulse waves"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "0b240726",
   "metadata": {
    "id": "0b240726"
   },
   "source": [
    "<div class=\"alert alert-block alert-warning\">\n",
    "<p><b>Resource:</b> You can find out more about the MIMIC-IV Waveform Database <a href=\"https://physionet.org/content/mimic4wdb/0.1.0/\">here</a>.</p>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "28b8e213",
   "metadata": {
    "id": "28b8e213"
   },
   "source": [
    "---\n",
    "## Setup"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "5dac032e",
   "metadata": {
    "id": "5dac032e"
   },
   "source": [
    "### Specify the required Python packages\n",
    "We'll import the following:\n",
    "- _sys_: an essential python package\n",
    "- _pathlib_ (well a particular function from _pathlib_, called _Path_)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "ce3cdfde",
   "metadata": {
    "id": "ce3cdfde"
   },
   "outputs": [],
   "source": [
    "import sys\n",
    "from pathlib import Path"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9976c5e4",
   "metadata": {
    "id": "9976c5e4"
   },
   "source": [
    "### Specify a particular version of the WFDB Toolbox"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6533154b",
   "metadata": {
    "id": "6533154b"
   },
   "source": [
    "- _wfdb_: For this workshop we will be using version 4 of the WaveForm DataBase (WFDB) Toolbox package. The package contains tools for processing waveform data such as those found in MIMIC:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "5fdfa989",
   "metadata": {
    "id": "5fdfa989"
   },
   "outputs": [],
   "source": [
    "!pip install wfdb==4.1.0\n",
    "import wfdb"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e11ce5b6",
   "metadata": {
    "id": "e11ce5b6"
   },
   "source": [
    "<div class=\"alert alert-block alert-warning\">\n",
    "<p><b>Resource:</b> You can find out more about the WFDB package <a href=\"https://physionet.org/content/wfdb-python/3.4.1/\">here</a>.</p>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d492e49f",
   "metadata": {
    "id": "d492e49f"
   },
   "source": [
    "Now that we have imported these packages (_i.e._ toolboxes) we have a set of tools (functions) ready to use."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e7d38297",
   "metadata": {
    "id": "e7d38297"
   },
   "source": [
    "### Specify the name of the MIMIC Waveform Database"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "68491718",
   "metadata": {
    "id": "68491718"
   },
   "source": [
    "- Specify the name of the MIMIC IV Waveform Database on Physionet, which comes from the URL: https://physionet.org/content/mimic4wdb/0.1.0/"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "982b8154",
   "metadata": {
    "id": "982b8154"
   },
   "outputs": [],
   "source": [
    "database_name = 'mimic4wdb/0.1.0'"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "738028c1",
   "metadata": {},
   "source": [
    "## Understanding the structure of the database"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "483f14b5",
   "metadata": {},
   "source": [
    "The waveform database is organized into \"records\".  Each record represents a single patient and roughly corresponds to a single ICU stay. Each record is stored in a separate subdirectory.\n",
    "\n",
    "An example of the file structure is shown below.  Here there are two patients (`subject_id` 10014354 and 10039708).  There is one record (81739927) belonging to the first patient, and two records (83411188 and 85583557) belonging to the second. Each record is made of several segments (e.g. record 83411188 is composed of segments: 81739927_0000, 81739927_0001, etc).\n",
    "\n",
    "\n",
    "```\n",
    "waves\n",
    "└── p100\n",
    "    ├── p10014354\n",
    "    │   └── 81739927\n",
    "    │       ├── 81739927.dat\n",
    "    │       ├── 81739927_0000.hea\n",
    "    │       ├── 81739927_0001.hea\n",
    "    │       ├── 81739927_0001e.dat\n",
    "    │       ├── 81739927_0001r.dat\n",
    "    │       ├── 81739927_0002.hea\n",
    "    │       ├── 81739927_0002e.dat\n",
    "    │       ├── 81739927_0002p.dat\n",
    "    │       ├── 81739927_0002r.dat\n",
    "    │       ├── ...\n",
    "    │       └── 81739927n.csv.gz\n",
    "    ├── ...\n",
    "    └── p10039708\n",
    "        ├── 83411188\n",
    "        │   ├── 83411188.hea\n",
    "        │   ├── ...\n",
    "        │   └── 83411188n.csv.gz\n",
    "        └── 85583557\n",
    "            ├── 85583557.hea\n",
    "            ├── ...\n",
    "            └── 85583557n.csv.gz\n",
    "```\n"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "497c0f68",
   "metadata": {},
   "source": [
    "_Source: this content is adapted from the [MIMIC WFDB Tutorials](https://wfdb.io/mimic_wfdb_tutorials)._"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e49196a6",
   "metadata": {
    "id": "e49196a6"
   },
   "source": [
    "---\n",
    "## Identify the records in the database"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b476f9b7",
   "metadata": {
    "id": "b476f9b7"
   },
   "source": [
    "### Get a list of records\n",
    "\n",
    "- Use the [`get_record_list`](https://wfdb.readthedocs.io/en/latest/io.html#wfdb.io.get_record_list) function from the WFDB toolbox to get a list of records in the database."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "d91aa6a7",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "d91aa6a7",
    "outputId": "db8e3169-76ac-4bdd-bbaa-91cf626c1a6b"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The 'mimic4wdb/0.1.0' database contains data from 198 subjects\n"
     ]
    }
   ],
   "source": [
    "# each subject may be associated with multiple records\n",
    "subjects = wfdb.get_record_list(database_name)\n",
    "print(f\"The '{database_name}' database contains data from {len(subjects)} subjects\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "0RzQmqjiQ9LD",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "0RzQmqjiQ9LD",
    "outputId": "31eb6067-de92-4424-b32b-f292623215a5"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Loaded 200 records from the 'mimic4wdb/0.1.0' database.\n"
     ]
    }
   ],
   "source": [
    "# iterate the subjects to get a list of records\n",
    "records = []\n",
    "for subject in subjects:\n",
    "    studies = wfdb.get_record_list(f'{database_name}/{subject}')\n",
    "    for study in studies:\n",
    "        records.append(Path(f'{subject}{study}'))\n",
    "\n",
    "print(f\"Loaded {len(records)} records from the '{database_name}' database.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ea21bb8b",
   "metadata": {},
   "source": [
    "_NB: There are 200 records for 198 subjects because two subjects had two records (we saw an example of this for subject 10039708 above)._"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fc82d67e",
   "metadata": {
    "id": "fc82d67e"
   },
   "source": [
    "### Look at the records"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "29552f5a",
   "metadata": {
    "id": "29552f5a"
   },
   "source": [
    "- Display the first few records"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "bb5745a7",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "bb5745a7",
    "outputId": "8fe32e59-c542-4a40-bd06-0c04fdcfbbfe"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "First five records: \n",
      " - waves/p100/p10014354/81739927/81739927\n",
      " - waves/p100/p10019003/87033314/87033314\n",
      " - waves/p100/p10020306/83404654/83404654\n",
      " - waves/p100/p10039708/83411188/83411188\n",
      " - waves/p100/p10039708/85583557/85583557\n",
      "\n",
      "Note the formatting of these records:\n",
      " - intermediate directory ('p100' in this case)\n",
      " - subject identifier (e.g. 'p10014354')\n",
      " - record identifier (e.g. '81739927'\n",
      " \n"
     ]
    }
   ],
   "source": [
    "# format and print first five records\n",
    "first_five_records = [str(x) for x in records[0:5]]\n",
    "first_five_records = \"\\n - \".join(first_five_records)\n",
    "print(f\"First five records: \\n - {first_five_records}\")\n",
    "\n",
    "print(\"\"\"\n",
    "Note the formatting of these records:\n",
    " - intermediate directory ('p100' in this case)\n",
    " - subject identifier (e.g. 'p10014354')\n",
    " - record identifier (e.g. '81739927'\n",
    " \"\"\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b56c29d5",
   "metadata": {
    "id": "b56c29d5"
   },
   "source": [
    "<div class=\"alert alert-block alert-info\">\n",
    "<p><b>Q:</b> Can you print the names of the last five records? <br> <b>Hint:</b> in Python, the last five elements can be specified using '[-5:]'</p>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cb21a93b",
   "metadata": {
    "id": "cb21a93b"
   },
   "source": [
    "---\n",
    "## Extract metadata for a record"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c39dc9f3",
   "metadata": {
    "id": "c39dc9f3"
   },
   "source": [
    "Each record contains metadata stored in a header file, named \"`<record name>.hea`\""
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3b2e6adb",
   "metadata": {
    "id": "3b2e6adb"
   },
   "source": [
    "### Specify the online directory containing a record's data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "id": "86eed39f",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "86eed39f",
    "outputId": "5cfa40d0-b4d4-4605-b677-164d9b603f90"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "PhysioNet directory specified for record: mimic4wdb/0.1.0/waves/p100/p10039708/83411188\n"
     ]
    }
   ],
   "source": [
    "# Specify the 4th record (note, in Python indexing begins at 0)\n",
    "idx = 3\n",
    "record = records[idx]\n",
    "record_dir = f'{database_name}/{record.parent}'\n",
    "print(\"PhysioNet directory specified for record: {}\".format(record_dir))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b5220ad3",
   "metadata": {
    "id": "b5220ad3"
   },
   "source": [
    "### Specify the subject identifier"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d7a5bbef",
   "metadata": {
    "id": "d7a5bbef"
   },
   "source": [
    "Extract the record name (e.g. '83411188') from the record (e.g. 'p100/p10039708/83411188/83411188'):"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "id": "b4bc247b",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "b4bc247b",
    "outputId": "a74ca902-ca05-496a-fd5d-2dbb0d95f998"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Record name: 83411188\n"
     ]
    }
   ],
   "source": [
    "record_name = record.name\n",
    "print(\"Record name: {}\".format(record_name))"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "742071da",
   "metadata": {
    "id": "742071da"
   },
   "source": [
    "### Load the metadata for this record\n",
    "- Use the [`rdheader`](https://wfdb.readthedocs.io/en/latest/io.html#wfdb.io.rdheader) function from the WFDB toolbox to load metadata from the record header file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "id": "c5a0afc5",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c5a0afc5",
    "outputId": "13b3dfa2-d489-4a77-c07d-a5116d67b4ec"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Done: metadata loaded for record '83411188' from the header file at:\n",
      "https://physionet.org/content/mimic4wdb/0.1.0/waves/p100/p10039708/83411188/83411188.hea\n"
     ]
    }
   ],
   "source": [
    "record_data = wfdb.rdheader(record_name, pn_dir=record_dir, rd_segments=True)\n",
    "remote_url = \"https://physionet.org/content/\" + record_dir + \"/\" + record_name + \".hea\"\n",
    "print(f\"Done: metadata loaded for record '{record_name}' from the header file at:\\n{remote_url}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f7a4d25d",
   "metadata": {
    "id": "f7a4d25d"
   },
   "source": [
    "---\n",
    "## Inspect details of physiological signals recorded in this record\n",
    "- Printing a few details of the signals from the extracted metadata"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "id": "58630149",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "58630149",
    "outputId": "e19d66b1-690c-4cc5-c754-c4b5d1b16d38"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "- Number of signals: 6\n",
      "- Duration: 14.2 hours\n",
      "- Base sampling frequency: 62.4725 Hz\n"
     ]
    }
   ],
   "source": [
    "print(f\"- Number of signals: {record_data.n_sig}\".format())\n",
    "print(f\"- Duration: {record_data.sig_len/(record_data.fs*60*60):.1f} hours\") \n",
    "print(f\"- Base sampling frequency: {record_data.fs} Hz\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7b3da17f",
   "metadata": {
    "id": "7b3da17f"
   },
   "source": [
    "---\n",
    "## Inspect the segments making up a record\n",
    "Each record is typically made up of several segments"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "b127c857",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "b127c857",
    "outputId": "4fe5a2b3-b95b-4bbe-db18-fabb199f0584"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The 6 segments from record 83411188 are:\n",
      "['83411188_0000', '83411188_0001', '83411188_0002', '83411188_0003', '83411188_0004', '83411188_0005']\n"
     ]
    }
   ],
   "source": [
    "segments = record_data.seg_name\n",
    "print(f\"The {len(segments)} segments from record {record_name} are:\\n{segments}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b379eaaf",
   "metadata": {
    "id": "b379eaaf"
   },
   "source": [
    "The format of filename for each segment is: `record directory, \"_\", segment number`"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f19d231b",
   "metadata": {
    "id": "f19d231b"
   },
   "source": [
    "---\n",
    "## Inspect an individual segment\n",
    "### Read the metadata for this segment\n",
    "- Read the metadata from the header file"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "id": "7f70d34f",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "7f70d34f",
    "outputId": "d1bd96de-09d9-4cf2-fa35-1bbcb5ddced4"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Header metadata loaded for: \n",
      "- the segment '83411188_0002'\n",
      "- in record '83411188'\n",
      "- for subject 'p10039708'\n",
      "\n"
     ]
    }
   ],
   "source": [
    "seg_no = 2\n",
    "segment_metadata = wfdb.rdheader(record_name=segments[seg_no], pn_dir=record_dir)\n",
    "\n",
    "print(f\"\"\"Header metadata loaded for: \n",
    "- the segment '{segment_metadata.record_name}'\n",
    "- in record '{record_name}'\n",
    "- for subject '{str(Path(record_dir).parent.parts[-1])}'\n",
    "\"\"\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d28771ac",
   "metadata": {
    "id": "d28771ac"
   },
   "source": [
    "### Find out what signals are present"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "id": "324727df",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "324727df",
    "outputId": "223bdb49-5023-453d-f2b7-a016a603fec9"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "This segment contains the following signals: ['II', 'V', 'aVR', 'ABP', 'Pleth', 'Resp']\n",
      "The signals are measured in units of: ['mV', 'mV', 'mV', 'mmHg', 'NU', 'Ohm']\n"
     ]
    }
   ],
   "source": [
    "print(f\"This segment contains the following signals: {segment_metadata.sig_name}\")\n",
    "print(f\"The signals are measured in units of: {segment_metadata.units}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f09b3f37",
   "metadata": {
    "id": "f09b3f37"
   },
   "source": [
    "See [here](https://archive.physionet.org/mimic2/mimic2_waveform_overview.shtml#signals-125-samplessecond) for definitions of signal abbreviations."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3f56dd61",
   "metadata": {
    "id": "3f56dd61"
   },
   "source": [
    "<div class=\"alert alert-block alert-info\">\n",
    "<p><b>Q:</b> Which of these signals is no longer present in segment '83411188_0005'?</p>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9f921f27",
   "metadata": {
    "id": "9f921f27"
   },
   "source": [
    "### Find out how long each signal lasts"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d217b764",
   "metadata": {
    "id": "d217b764"
   },
   "source": [
    "All signals in a segment are time-aligned, measured at the same sampling frequency, and last the same duration:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "id": "c44f00a7",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "c44f00a7",
    "outputId": "1cfa789e-b66b-4c8e-805b-4197c663ba18"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The signals have a base sampling frequency of 62.5 Hz\n",
      "and they last for 0.9 minutes\n"
     ]
    }
   ],
   "source": [
    "print(f\"The signals have a base sampling frequency of {segment_metadata.fs:.1f} Hz\")\n",
    "print(f\"and they last for {segment_metadata.sig_len/(segment_metadata.fs*60):.1f} minutes\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d2a80895",
   "metadata": {
    "id": "d2a80895"
   },
   "source": [
    "## Identify records suitable for analysis"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1a3218d3",
   "metadata": {
    "id": "1a3218d3"
   },
   "source": [
    "- The signals and their durations vary from one record (and segment) to the next. \n",
    "- Since most studies require specific types of signals (e.g. blood pressure and photoplethysmography signals), we need to be able to identify which records (or segments) contain the required signals and duration."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b02c0b4e",
   "metadata": {
    "id": "b02c0b4e"
   },
   "source": [
    "### Setup"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "95181681",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "95181681",
    "outputId": "544c69db-59d9-432c-ee6c-10e1b0f54318"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Earlier, we loaded 200 records from the 'mimic4wdb/0.1.0' database.\n"
     ]
    }
   ],
   "source": [
    "print(f\"Earlier, we loaded {len(records)} records from the '{database_name}' database.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7f2b5955",
   "metadata": {
    "id": "7f2b5955"
   },
   "source": [
    "### Specify requirements"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "83f8611c",
   "metadata": {
    "id": "83f8611c"
   },
   "source": [
    "- Required signals"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "id": "3d1505ab",
   "metadata": {
    "id": "3d1505ab"
   },
   "outputs": [],
   "source": [
    "required_sigs = ['ABP', 'Pleth']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "03920810",
   "metadata": {
    "id": "03920810"
   },
   "source": [
    "- Required duration"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "568a93c1",
   "metadata": {
    "id": "568a93c1"
   },
   "outputs": [],
   "source": [
    "# convert from minutes to seconds\n",
    "req_seg_duration = 10*60 "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "d49187cd",
   "metadata": {
    "id": "d49187cd"
   },
   "source": [
    "### Find out how many records meet the requirements"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "65f2cdce",
   "metadata": {
    "id": "65f2cdce"
   },
   "source": [
    "_NB: This step may take a while. The results are copied below to save running it yourself._"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "id": "015b47d3",
   "metadata": {
    "id": "015b47d3"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Record: waves/p100/p10014354/81739927/81739927 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p100/p10019003/87033314/87033314 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p100/p10020306/83404654/83404654 (reading data)\n",
      " - Segment: 83404654_0000 (too short at 0.0 mins)\n",
      " - Segment: 83404654_0001 (long enough, but missing signal(s))\n",
      " - Segment: 83404654_0002 (too short at 0.1 mins)\n",
      " - Segment: 83404654_0003 (too short at 0.3 mins)\n",
      " - Segment: 83404654_0004 (long enough, but missing signal(s))\n",
      " - Segment: 83404654_0005 (met requirements)\n",
      "Record: waves/p100/p10039708/83411188/83411188 (reading data)\n",
      " - Segment: 83411188_0000 (too short at 0.0 mins)\n",
      " - Segment: 83411188_0001 (too short at 0.1 mins)\n",
      " - Segment: 83411188_0002 (too short at 0.9 mins)\n",
      " - Segment: 83411188_0003 (too short at 0.3 mins)\n",
      " - Segment: 83411188_0004 (too short at 0.3 mins)\n",
      " - Segment: 83411188_0005 (long enough, but missing signal(s))\n",
      "Record: waves/p100/p10039708/85583557/85583557 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p100/p10079700/85594648/85594648 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p100/p10082591/84050536/84050536 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p101/p10100546/83268087/83268087 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p101/p10112163/88501826/88501826 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p101/p10126957/82924339/82924339 (reading data)\n",
      " - Segment: 82924339_0000 (too short at 0.0 mins)\n",
      " - Segment: 82924339_0001 (too short at 0.2 mins)\n",
      " - Segment: 82924339_0002 (too short at 0.1 mins)\n",
      " - Segment: 82924339_0003 (too short at 0.4 mins)\n",
      " - Segment: 82924339_0004 (too short at 0.1 mins)\n",
      " - Segment: 82924339_0005 (too short at 0.0 mins)\n",
      " - Segment: 82924339_0006 (too short at 5.3 mins)\n",
      " - Segment: 82924339_0007 (met requirements)\n",
      "Record: waves/p102/p10209410/84248019/84248019 (reading data)\n",
      " - Segment: 84248019_0000 (too short at 0.0 mins)\n",
      " - Segment: 84248019_0001 (too short at 0.1 mins)\n",
      " - Segment: 84248019_0002 (too short at 4.8 mins)\n",
      " - Segment: 84248019_0003 (too short at 0.2 mins)\n",
      " - Segment: 84248019_0004 (too short at 1.0 mins)\n",
      " - Segment: 84248019_0005 (met requirements)\n",
      "Record: waves/p103/p10303080/88399302/88399302 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p104/p10494990/88374538/88374538 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p105/p10560354/81105139/81105139 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p106/p10680081/86426168/86426168 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p108/p10882818/81826943/81826943 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p109/p10952189/82439920/82439920 (reading data)\n",
      " - Segment: 82439920_0000 (too short at 0.0 mins)\n",
      " - Segment: 82439920_0001 (too short at 0.1 mins)\n",
      " - Segment: 82439920_0002 (too short at 0.0 mins)\n",
      " - Segment: 82439920_0003 (too short at 0.1 mins)\n",
      " - Segment: 82439920_0004 (met requirements)\n",
      "Record: waves/p110/p11013146/82432904/82432904 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p111/p11109975/82800131/82800131 (reading data)\n",
      " - Segment: 82800131_0000 (too short at 0.0 mins)\n",
      " - Segment: 82800131_0001 (too short at 0.1 mins)\n",
      " - Segment: 82800131_0002 (met requirements)\n",
      "Record: waves/p113/p11320864/81312415/81312415 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p113/p11392990/84304393/84304393 (reading data)\n",
      " - Segment: 84304393_0000 (too short at 0.0 mins)\n",
      " - Segment: 84304393_0001 (met requirements)\n",
      "Record: waves/p115/p11552552/82650378/82650378 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p115/p11552552/88733244/88733244 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p115/p11558369/88636340/88636340 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p115/p11573811/87942784/87942784 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p115/p11596691/86130599/86130599 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p116/p11699665/81602645/81602645 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p119/p11944882/88867862/88867862 (reading data)\n",
      " - Segment: 88867862_0000 (too short at 0.0 mins)\n",
      " - Segment: 88867862_0001 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0002 (too short at 0.6 mins)\n",
      " - Segment: 88867862_0003 (too short at 0.2 mins)\n",
      " - Segment: 88867862_0004 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0005 (too short at 6.5 mins)\n",
      " - Segment: 88867862_0006 (too short at 2.6 mins)\n",
      " - Segment: 88867862_0007 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0008 (too short at 0.3 mins)\n",
      " - Segment: 88867862_0009 (too short at 0.3 mins)\n",
      " - Segment: 88867862_0010 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0011 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0012 (too short at 0.2 mins)\n",
      " - Segment: 88867862_0013 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0014 (too short at 0.0 mins)\n",
      " - Segment: 88867862_0015 (too short at 0.1 mins)\n",
      " - Segment: 88867862_0016 (too short at 0.2 mins)\n",
      " - Segment: 88867862_0017 (too short at 0.0 mins)\n",
      " - Segment: 88867862_0018 (too short at 0.1 mins)\n",
      " - Segment: 88867862_0019 (too short at 0.1 mins)\n",
      " - Segment: 88867862_0020 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0021 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0022 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0023 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0024 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0025 (too short at 1.1 mins)\n",
      " - Segment: 88867862_0026 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0027 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0028 (too short at 2.6 mins)\n",
      " - Segment: 88867862_0029 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0030 (too short at 0.1 mins)\n",
      " - Segment: 88867862_0031 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0032 (too short at 0.8 mins)\n",
      " - Segment: 88867862_0033 (too short at 1.5 mins)\n",
      " - Segment: 88867862_0034 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0035 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0036 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0037 (too short at 0.7 mins)\n",
      " - Segment: 88867862_0038 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0039 (too short at 9.4 mins)\n",
      " - Segment: 88867862_0040 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0041 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0042 (long enough, but missing signal(s))\n",
      " - Segment: 88867862_0043 (long enough, but missing signal(s))\n",
      "Record: waves/p121/p12168037/89464742/89464742 (reading data)\n",
      " - Segment: 89464742_0000 (too short at 0.0 mins)\n",
      " - Segment: 89464742_0001 (met requirements)\n",
      "Record: waves/p121/p12173569/88958796/88958796 (reading data)\n",
      " - Segment: 88958796_0000 (too short at 0.0 mins)\n",
      " - Segment: 88958796_0001 (too short at 1.6 mins)\n",
      " - Segment: 88958796_0002 (too short at 6.5 mins)\n",
      " - Segment: 88958796_0003 (too short at 0.5 mins)\n",
      " - Segment: 88958796_0004 (met requirements)\n",
      "Record: waves/p121/p12188288/88995377/88995377 (reading data)\n",
      " - Segment: 88995377_0000 (too short at 0.0 mins)\n",
      " - Segment: 88995377_0001 (met requirements)\n",
      "Record: waves/p122/p12226163/85982742/85982742 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p122/p12246674/81515145/81515145 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p122/p12290932/84513510/84513510 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p122/p12295067/86906600/86906600 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p124/p12408438/88826653/88826653 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p124/p12424398/81741333/81741333 (reading data)\n",
      " - Segment: 81741333_0000 (too short at 0.0 mins)\n",
      " - Segment: 81741333_0001 (long enough, but missing signal(s))\n",
      " - Segment: 81741333_0002 (too short at 0.4 mins)\n",
      " - Segment: 81741333_0003 (long enough, but missing signal(s))\n",
      " - Segment: 81741333_0004 (too short at 0.4 mins)\n",
      " - Segment: 81741333_0005 (too short at 0.1 mins)\n",
      " - Segment: 81741333_0006 (too short at 1.1 mins)\n",
      " - Segment: 81741333_0007 (long enough, but missing signal(s))\n",
      " - Segment: 81741333_0008 (too short at 0.1 mins)\n",
      " - Segment: 81741333_0009 (too short at 0.0 mins)\n",
      " - Segment: 81741333_0010 (long enough, but missing signal(s))\n",
      " - Segment: 81741333_0011 (too short at 0.1 mins)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " - Segment: 81741333_0012 (too short at 0.0 mins)\n",
      " - Segment: 81741333_0013 (too short at 0.0 mins)\n",
      " - Segment: 81741333_0014 (too short at 0.1 mins)\n",
      " - Segment: 81741333_0015 (long enough, but missing signal(s))\n",
      "Record: waves/p124/p12449182/84179115/84179115 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p124/p12470697/84213440/84213440 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p125/p12545470/80674263/80674263 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p125/p12563752/85393521/85393521 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p125/p12567919/82552643/82552643 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p127/p12789108/85835247/85835247 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p128/p12801061/80154334/80154334 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p128/p12807320/81739815/81739815 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p128/p12847457/83054955/83054955 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p128/p12872596/85230771/85230771 (reading data)\n",
      " - Segment: 85230771_0000 (too short at 0.0 mins)\n",
      " - Segment: 85230771_0001 (too short at 0.1 mins)\n",
      " - Segment: 85230771_0002 (too short at 0.3 mins)\n",
      " - Segment: 85230771_0003 (too short at 0.1 mins)\n",
      " - Segment: 85230771_0004 (met requirements)\n",
      "Record: waves/p128/p12882754/84094519/84094519 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p129/p12933208/86643930/86643930 (reading data)\n",
      " - Segment: 86643930_0000 (too short at 0.0 mins)\n",
      " - Segment: 86643930_0001 (long enough, but missing signal(s))\n",
      " - Segment: 86643930_0002 (too short at 0.1 mins)\n",
      " - Segment: 86643930_0003 (long enough, but missing signal(s))\n",
      " - Segment: 86643930_0004 (met requirements)\n",
      "Record: waves/p129/p12961799/86114120/86114120 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p130/p13016481/81250824/81250824 (reading data)\n",
      " - Segment: 81250824_0000 (too short at 0.0 mins)\n",
      " - Segment: 81250824_0001 (too short at 1.3 mins)\n",
      " - Segment: 81250824_0002 (too short at 0.1 mins)\n",
      " - Segment: 81250824_0003 (too short at 0.0 mins)\n",
      " - Segment: 81250824_0004 (too short at 1.4 mins)\n",
      " - Segment: 81250824_0005 (met requirements)\n",
      "Record: waves/p130/p13080738/85361504/85361504 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p130/p13090274/87473566/87473566 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p131/p13184012/87023605/87023605 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p132/p13208026/82342224/82342224 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p132/p13216117/81815063/81815063 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p132/p13240081/87706224/87706224 (reading data)\n",
      " - Segment: 87706224_0000 (too short at 0.0 mins)\n",
      " - Segment: 87706224_0001 (too short at 0.1 mins)\n",
      " - Segment: 87706224_0002 (too short at 8.0 mins)\n",
      " - Segment: 87706224_0003 (met requirements)\n",
      "Record: waves/p133/p13335291/89017807/89017807 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p133/p13364831/82697127/82697127 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p133/p13386985/81002096/81002096 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p134/p13457656/88841356/88841356 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p134/p13496169/80200410/80200410 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p135/p13559368/86957236/86957236 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p136/p13620446/83988903/83988903 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p136/p13624686/83058614/83058614 (reading data)\n",
      " - Segment: 83058614_0000 (too short at 0.0 mins)\n",
      " - Segment: 83058614_0001 (too short at 0.1 mins)\n",
      " - Segment: 83058614_0002 (too short at 0.1 mins)\n",
      " - Segment: 83058614_0003 (too short at 0.0 mins)\n",
      " - Segment: 83058614_0004 (too short at 0.0 mins)\n",
      " - Segment: 83058614_0005 (met requirements)\n",
      "Record: waves/p136/p13687171/82266835/82266835 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p137/p13724605/81178488/81178488 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p137/p13791821/82803505/82803505 (reading data)\n",
      " - Segment: 82803505_0000 (too short at 0.0 mins)\n",
      " - Segment: 82803505_0001 (too short at 0.1 mins)\n",
      " - Segment: 82803505_0002 (long enough, but missing signal(s))\n",
      " - Segment: 82803505_0003 (long enough, but missing signal(s))\n",
      " - Segment: 82803505_0004 (long enough, but missing signal(s))\n",
      " - Segment: 82803505_0005 (too short at 0.1 mins)\n",
      " - Segment: 82803505_0006 (long enough, but missing signal(s))\n",
      " - Segment: 82803505_0007 (too short at 3.8 mins)\n",
      " - Segment: 82803505_0008 (long enough, but missing signal(s))\n",
      " - Segment: 82803505_0009 (too short at 0.2 mins)\n",
      " - Segment: 82803505_0010 (too short at 2.4 mins)\n",
      " - Segment: 82803505_0011 (too short at 0.1 mins)\n",
      " - Segment: 82803505_0012 (long enough, but missing signal(s))\n",
      " - Segment: 82803505_0013 (too short at 0.2 mins)\n",
      " - Segment: 82803505_0014 (long enough, but missing signal(s))\n",
      " - Segment: 82803505_0015 (too short at 5.5 mins)\n",
      " - Segment: 82803505_0016 (long enough, but missing signal(s))\n",
      " - Segment: 82803505_0017 (met requirements)\n",
      "Record: waves/p138/p13840756/85241465/85241465 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p139/p13909615/85874778/85874778 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p140/p14025287/86429079/86429079 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p140/p14043090/80351079/80351079 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p140/p14057060/81396664/81396664 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p140/p14071752/87613677/87613677 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p141/p14141512/85863370/85863370 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p141/p14191565/88574629/88574629 (reading data)\n",
      " - Segment: 88574629_0000 (too short at 0.0 mins)\n",
      " - Segment: 88574629_0001 (met requirements)\n",
      "Record: waves/p142/p14260018/80493349/80493349 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p142/p14285792/87867111/87867111 (reading data)\n",
      " - Segment: 87867111_0000 (too short at 0.0 mins)\n",
      " - Segment: 87867111_0001 (long enough, but missing signal(s))\n",
      " - Segment: 87867111_0002 (too short at 0.1 mins)\n",
      " - Segment: 87867111_0003 (long enough, but missing signal(s))\n",
      " - Segment: 87867111_0004 (too short at 1.0 mins)\n",
      " - Segment: 87867111_0005 (long enough, but missing signal(s))\n",
      " - Segment: 87867111_0006 (too short at 0.5 mins)\n",
      " - Segment: 87867111_0007 (long enough, but missing signal(s))\n",
      " - Segment: 87867111_0008 (long enough, but missing signal(s))\n",
      " - Segment: 87867111_0009 (long enough, but missing signal(s))\n",
      " - Segment: 87867111_0010 (too short at 0.1 mins)\n",
      " - Segment: 87867111_0011 (long enough, but missing signal(s))\n",
      " - Segment: 87867111_0012 (met requirements)\n",
      "Record: waves/p143/p14328567/80030009/80030009 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p143/p14356077/84560969/84560969 (reading data)\n",
      " - Segment: 84560969_0000 (too short at 0.0 mins)\n",
      " - Segment: 84560969_0001 (met requirements)\n",
      "Record: waves/p143/p14363499/87562386/87562386 (reading data)\n",
      " - Segment: 87562386_0000 (too short at 0.0 mins)\n",
      " - Segment: 87562386_0001 (met requirements)\n",
      "Record: waves/p145/p14504374/89909100/89909100 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p145/p14573205/83993183/83993183 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p146/p14629329/89923227/89923227 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p146/p14678292/82257762/82257762 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p146/p14695840/88685937/88685937 (reading data)\n",
      " - Segment: 88685937_0000 (too short at 0.0 mins)\n",
      " - Segment: 88685937_0001 (met requirements)\n",
      "Record: waves/p147/p14711488/80647461/80647461 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p147/p14739057/86201081/86201081 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p147/p14751132/87909383/87909383 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p147/p14759494/87555605/87555605 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p147/p14781701/80705205/80705205 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p147/p14782379/83682560/83682560 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p148/p14811560/88188377/88188377 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p149/p14931547/86120311/86120311 (reading data)\n",
      " - Segment: 86120311_0000 (too short at 0.0 mins)\n",
      " - Segment: 86120311_0001 (met requirements)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Record: waves/p150/p15030787/82582002/82582002 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p151/p15174162/89866183/89866183 (reading data)\n",
      " - Segment: 89866183_0000 (too short at 0.0 mins)\n",
      " - Segment: 89866183_0001 (too short at 0.2 mins)\n",
      " - Segment: 89866183_0002 (too short at 0.1 mins)\n",
      " - Segment: 89866183_0003 (too short at 0.0 mins)\n",
      " - Segment: 89866183_0004 (too short at 3.0 mins)\n",
      " - Segment: 89866183_0005 (too short at 0.0 mins)\n",
      " - Segment: 89866183_0006 (too short at 0.1 mins)\n",
      " - Segment: 89866183_0007 (too short at 0.0 mins)\n",
      " - Segment: 89866183_0008 (too short at 0.1 mins)\n",
      " - Segment: 89866183_0009 (too short at 0.2 mins)\n",
      " - Segment: 89866183_0010 (too short at 0.1 mins)\n",
      " - Segment: 89866183_0011 (too short at 0.0 mins)\n",
      " - Segment: 89866183_0012 (too short at 0.0 mins)\n",
      " - Segment: 89866183_0013 (too short at 0.0 mins)\n",
      " - Segment: 89866183_0014 (met requirements)\n",
      "Record: waves/p153/p15312343/89068160/89068160 (reading data)\n",
      " - Segment: 89068160_0000 (too short at 0.0 mins)\n",
      " - Segment: 89068160_0001 (too short at 1.3 mins)\n",
      " - Segment: 89068160_0002 (met requirements)\n",
      "Record: waves/p153/p15315368/83076714/83076714 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p153/p15342703/86380383/86380383 (reading data)\n",
      " - Segment: 86380383_0000 (too short at 0.0 mins)\n",
      " - Segment: 86380383_0001 (met requirements)\n",
      "Record: waves/p154/p15450741/80222656/80222656 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p154/p15461634/89565005/89565005 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p154/p15465960/87710197/87710197 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p154/p15497782/80353107/80353107 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p155/p15524470/80713046/80713046 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p155/p15552902/85078610/85078610 (reading data)\n",
      " - Segment: 85078610_0000 (too short at 0.0 mins)\n",
      " - Segment: 85078610_0001 (too short at 0.1 mins)\n",
      " - Segment: 85078610_0002 (too short at 0.1 mins)\n",
      " - Segment: 85078610_0003 (too short at 0.0 mins)\n",
      " - Segment: 85078610_0004 (too short at 2.1 mins)\n",
      " - Segment: 85078610_0005 (too short at 0.0 mins)\n",
      " - Segment: 85078610_0006 (too short at 0.0 mins)\n",
      " - Segment: 85078610_0007 (too short at 1.2 mins)\n",
      " - Segment: 85078610_0008 (met requirements)\n",
      "Record: waves/p156/p15649186/87702634/87702634 (reading data)\n",
      " - Segment: 87702634_0000 (too short at 0.0 mins)\n",
      " - Segment: 87702634_0001 (too short at 0.1 mins)\n",
      " - Segment: 87702634_0002 (too short at 0.1 mins)\n",
      " - Segment: 87702634_0003 (too short at 0.9 mins)\n",
      " - Segment: 87702634_0004 (too short at 0.1 mins)\n",
      " - Segment: 87702634_0005 (too short at 8.6 mins)\n",
      " - Segment: 87702634_0006 (too short at 0.1 mins)\n",
      " - Segment: 87702634_0007 (met requirements)\n",
      "Record: waves/p156/p15651262/87121214/87121214 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p156/p15685201/83226324/83226324 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p157/p15738617/84323120/84323120 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p158/p15855446/80620046/80620046 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p158/p15857793/84686667/84686667 (reading data)\n",
      " - Segment: 84686667_0000 (too short at 0.0 mins)\n",
      " - Segment: 84686667_0001 (too short at 1.5 mins)\n",
      " - Segment: 84686667_0002 (met requirements)\n",
      "Record: waves/p158/p15858229/85931717/85931717 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p158/p15859796/87162659/87162659 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p158/p15865327/84802706/84802706 (reading data)\n",
      " - Segment: 84802706_0000 (too short at 0.0 mins)\n",
      " - Segment: 84802706_0001 (too short at 0.0 mins)\n",
      " - Segment: 84802706_0002 (met requirements)\n",
      "Record: waves/p158/p15896656/81811182/81811182 (reading data)\n",
      " - Segment: 81811182_0000 (too short at 0.0 mins)\n",
      " - Segment: 81811182_0001 (too short at 0.1 mins)\n",
      " - Segment: 81811182_0002 (too short at 0.0 mins)\n",
      " - Segment: 81811182_0003 (too short at 0.1 mins)\n",
      " - Segment: 81811182_0004 (met requirements)\n",
      "Record: waves/p159/p15920699/84421559/84421559 (reading data)\n",
      " - Segment: 84421559_0000 (too short at 0.0 mins)\n",
      " - Segment: 84421559_0001 (too short at 5.3 mins)\n",
      " - Segment: 84421559_0002 (too short at 0.1 mins)\n",
      " - Segment: 84421559_0003 (too short at 0.0 mins)\n",
      " - Segment: 84421559_0004 (too short at 0.1 mins)\n",
      " - Segment: 84421559_0005 (met requirements)\n",
      "Record: waves/p160/p16034243/88221516/88221516 (reading data)\n",
      " - Segment: 88221516_0000 (too short at 0.0 mins)\n",
      " - Segment: 88221516_0001 (too short at 3.0 mins)\n",
      " - Segment: 88221516_0002 (too short at 0.0 mins)\n",
      " - Segment: 88221516_0003 (too short at 0.1 mins)\n",
      " - Segment: 88221516_0004 (too short at 4.0 mins)\n",
      " - Segment: 88221516_0005 (too short at 0.3 mins)\n",
      " - Segment: 88221516_0006 (too short at 5.2 mins)\n",
      " - Segment: 88221516_0007 (met requirements)\n",
      "Record: waves/p160/p16074364/84765423/84765423 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p160/p16089661/87257193/87257193 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p160/p16096029/87730914/87730914 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p162/p16215869/89184684/89184684 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p162/p16224237/84746493/84746493 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p163/p16331109/85937857/85937857 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p163/p16362820/85250800/85250800 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p164/p16442963/89328952/89328952 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p164/p16450343/87509018/87509018 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p165/p16547220/81902403/81902403 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p165/p16566444/80057524/80057524 (reading data)\n",
      " - Segment: 80057524_0000 (too short at 0.0 mins)\n",
      " - Segment: 80057524_0001 (long enough, but missing signal(s))\n",
      " - Segment: 80057524_0002 (too short at 0.6 mins)\n",
      " - Segment: 80057524_0003 (too short at 4.2 mins)\n",
      " - Segment: 80057524_0004 (too short at 0.7 mins)\n",
      " - Segment: 80057524_0005 (met requirements)\n",
      "Record: waves/p165/p16587972/86803944/86803944 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p166/p16601928/88159741/88159741 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p166/p16644640/84209926/84209926 (reading data)\n",
      " - Segment: 84209926_0000 (too short at 0.0 mins)\n",
      " - Segment: 84209926_0001 (too short at 0.5 mins)\n",
      " - Segment: 84209926_0002 (too short at 0.2 mins)\n",
      " - Segment: 84209926_0003 (too short at 0.0 mins)\n",
      " - Segment: 84209926_0004 (too short at 0.1 mins)\n",
      " - Segment: 84209926_0005 (too short at 0.1 mins)\n",
      " - Segment: 84209926_0006 (too short at 0.0 mins)\n",
      " - Segment: 84209926_0007 (too short at 0.9 mins)\n",
      " - Segment: 84209926_0008 (long enough, but missing signal(s))\n",
      " - Segment: 84209926_0009 (too short at 0.3 mins)\n",
      " - Segment: 84209926_0010 (too short at 1.3 mins)\n",
      " - Segment: 84209926_0011 (too short at 0.1 mins)\n",
      " - Segment: 84209926_0012 (too short at 0.0 mins)\n",
      " - Segment: 84209926_0013 (too short at 0.0 mins)\n",
      " - Segment: 84209926_0014 (too short at 0.1 mins)\n",
      " - Segment: 84209926_0015 (long enough, but missing signal(s))\n",
      " - Segment: 84209926_0016 (too short at 4.7 mins)\n",
      " - Segment: 84209926_0017 (long enough, but missing signal(s))\n",
      " - Segment: 84209926_0018 (met requirements)\n",
      "Record: waves/p166/p16645935/86666275/86666275 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p166/p16662288/83394240/83394240 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p166/p16683551/83349747/83349747 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p167/p16709726/83959636/83959636 (reading data)\n",
      " - Segment: 83959636_0000 (too short at 0.0 mins)\n",
      " - Segment: 83959636_0001 (too short at 0.0 mins)\n",
      " - Segment: 83959636_0002 (too short at 0.1 mins)\n",
      " - Segment: 83959636_0003 (too short at 6.3 mins)\n",
      " - Segment: 83959636_0004 (too short at 1.1 mins)\n",
      " - Segment: 83959636_0005 (too short at 0.9 mins)\n",
      " - Segment: 83959636_0006 (too short at 3.1 mins)\n",
      " - Segment: 83959636_0007 (too short at 1.7 mins)\n",
      " - Segment: 83959636_0008 (too short at 0.1 mins)\n",
      " - Segment: 83959636_0009 (too short at 0.0 mins)\n",
      " - Segment: 83959636_0010 (met requirements)\n",
      "Record: waves/p167/p16715341/89989722/89989722 (reading data)\n",
      " - Segment: 89989722_0000 (too short at 0.0 mins)\n",
      " - Segment: 89989722_0001 (too short at 0.1 mins)\n",
      " - Segment: 89989722_0002 (too short at 2.3 mins)\n",
      " - Segment: 89989722_0003 (too short at 2.0 mins)\n",
      " - Segment: 89989722_0004 (too short at 9.6 mins)\n",
      " - Segment: 89989722_0005 (too short at 0.9 mins)\n",
      " - Segment: 89989722_0006 (too short at 2.9 mins)\n",
      " - Segment: 89989722_0007 (too short at 0.3 mins)\n",
      " - Segment: 89989722_0008 (too short at 0.5 mins)\n",
      " - Segment: 89989722_0009 (too short at 6.1 mins)\n",
      " - Segment: 89989722_0010 (too short at 0.3 mins)\n",
      " - Segment: 89989722_0011 (too short at 0.6 mins)\n",
      " - Segment: 89989722_0012 (too short at 0.4 mins)\n",
      " - Segment: 89989722_0013 (too short at 4.2 mins)\n",
      " - Segment: 89989722_0014 (too short at 1.2 mins)\n",
      " - Segment: 89989722_0015 (too short at 3.0 mins)\n",
      " - Segment: 89989722_0016 (met requirements)\n",
      "Record: waves/p168/p16818396/89225487/89225487 (reading data)\n",
      " - Segment: 89225487_0000 (too short at 0.0 mins)\n",
      " - Segment: 89225487_0001 (too short at 0.1 mins)\n",
      " - Segment: 89225487_0002 (too short at 7.4 mins)\n",
      " - Segment: 89225487_0003 (too short at 0.1 mins)\n",
      " - Segment: 89225487_0004 (too short at 0.1 mins)\n",
      " - Segment: 89225487_0005 (too short at 0.4 mins)\n",
      " - Segment: 89225487_0006 (too short at 0.1 mins)\n",
      " - Segment: 89225487_0007 (met requirements)\n",
      "Record: waves/p168/p16820602/82493254/82493254 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p168/p16846280/83877081/83877081 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p168/p16848565/84917468/84917468 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p169/p16949991/88967754/88967754 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p169/p16955095/82284982/82284982 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p169/p16971339/87311151/87311151 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p170/p17032851/84391267/84391267 (reading data)\n",
      " - Segment: 84391267_0000 (too short at 0.0 mins)\n",
      " - Segment: 84391267_0001 (met requirements)\n",
      "Record: waves/p171/p17107892/83439223/83439223 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p172/p17229504/80889556/80889556 (reading data)\n",
      " - Segment: 80889556_0000 (too short at 0.0 mins)\n",
      " - Segment: 80889556_0001 (too short at 0.6 mins)\n",
      " - Segment: 80889556_0002 (met requirements)\n",
      "Record: waves/p173/p17301721/85250558/85250558 (reading data)\n",
      " - Segment: 85250558_0000 (too short at 0.0 mins)\n",
      " - Segment: 85250558_0001 (too short at 6.1 mins)\n",
      " - Segment: 85250558_0002 (too short at 0.0 mins)\n",
      " - Segment: 85250558_0003 (too short at 0.1 mins)\n",
      " - Segment: 85250558_0004 (too short at 8.1 mins)\n",
      " - Segment: 85250558_0005 (too short at 0.1 mins)\n",
      " - Segment: 85250558_0006 (too short at 3.0 mins)\n",
      " - Segment: 85250558_0007 (too short at 4.5 mins)\n",
      " - Segment: 85250558_0008 (too short at 0.1 mins)\n",
      " - Segment: 85250558_0009 (too short at 0.4 mins)\n",
      " - Segment: 85250558_0010 (too short at 0.2 mins)\n",
      " - Segment: 85250558_0011 (met requirements)\n",
      "Record: waves/p173/p17325001/84567505/84567505 (reading data)\n",
      " - Segment: 84567505_0000 (too short at 0.0 mins)\n",
      " - Segment: 84567505_0001 (too short at 0.2 mins)\n",
      " - Segment: 84567505_0002 (too short at 0.1 mins)\n",
      " - Segment: 84567505_0003 (too short at 0.0 mins)\n",
      " - Segment: 84567505_0004 (too short at 0.4 mins)\n",
      " - Segment: 84567505_0005 (met requirements)\n",
      "Record: waves/p174/p17413562/88976763/88976763 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p174/p17459141/80111237/80111237 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p174/p17488284/84486962/84486962 (reading data)\n",
      " - Segment: 84486962_0000 (too short at 0.0 mins)\n",
      " - Segment: 84486962_0001 (too short at 3.6 mins)\n",
      " - Segment: 84486962_0002 (too short at 0.5 mins)\n",
      " - Segment: 84486962_0003 (too short at 0.2 mins)\n",
      " - Segment: 84486962_0004 (too short at 0.0 mins)\n",
      " - Segment: 84486962_0005 (too short at 0.1 mins)\n",
      " - Segment: 84486962_0006 (too short at 0.4 mins)\n",
      " - Segment: 84486962_0007 (too short at 0.3 mins)\n",
      " - Segment: 84486962_0008 (too short at 0.5 mins)\n",
      " - Segment: 84486962_0009 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0010 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0011 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0012 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0013 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0014 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0015 (too short at 0.1 mins)\n",
      " - Segment: 84486962_0016 (too short at 0.2 mins)\n",
      " - Segment: 84486962_0017 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0018 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0019 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0020 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0021 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0022 (too short at 0.2 mins)\n",
      " - Segment: 84486962_0023 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0024 (too short at 0.1 mins)\n",
      " - Segment: 84486962_0025 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0026 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0027 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0028 (too short at 0.1 mins)\n",
      " - Segment: 84486962_0029 (too short at 0.9 mins)\n",
      " - Segment: 84486962_0030 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0031 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0032 (long enough, but missing signal(s))\n",
      " - Segment: 84486962_0033 (long enough, but missing signal(s))\n",
      "Record: waves/p174/p17490822/85814172/85814172 (reading data)\n",
      " - Segment: 85814172_0000 (too short at 0.0 mins)\n",
      " - Segment: 85814172_0001 (too short at 2.1 mins)\n",
      " - Segment: 85814172_0002 (too short at 0.4 mins)\n",
      " - Segment: 85814172_0003 (long enough, but missing signal(s))\n",
      " - Segment: 85814172_0004 (long enough, but missing signal(s))\n",
      " - Segment: 85814172_0005 (too short at 0.4 mins)\n",
      " - Segment: 85814172_0006 (long enough, but missing signal(s))\n",
      " - Segment: 85814172_0007 (met requirements)\n",
      "Record: waves/p175/p17549883/88582885/88582885 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p175/p17578102/83863589/83863589 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p177/p17701063/88788921/88788921 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p177/p17708869/84580526/84580526 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p177/p17738824/88884866/88884866 (reading data)\n",
      " - Segment: 88884866_0000 (too short at 0.0 mins)\n",
      " - Segment: 88884866_0001 (too short at 9.6 mins)\n",
      " - Segment: 88884866_0002 (too short at 0.0 mins)\n",
      " - Segment: 88884866_0003 (too short at 0.1 mins)\n",
      " - Segment: 88884866_0004 (long enough, but missing signal(s))\n",
      " - Segment: 88884866_0005 (met requirements)\n",
      "Record: waves/p177/p17744715/80497954/80497954 (reading data)\n",
      " - Segment: 80497954_0000 (too short at 0.0 mins)\n",
      " - Segment: 80497954_0001 (too short at 0.5 mins)\n",
      " - Segment: 80497954_0002 (too short at 0.1 mins)\n",
      " - Segment: 80497954_0003 (too short at 0.0 mins)\n",
      " - Segment: 80497954_0004 (too short at 0.5 mins)\n",
      " - Segment: 80497954_0005 (too short at 0.1 mins)\n",
      " - Segment: 80497954_0006 (too short at 0.0 mins)\n",
      " - Segment: 80497954_0007 (too short at 0.3 mins)\n",
      " - Segment: 80497954_0008 (too short at 0.1 mins)\n",
      " - Segment: 80497954_0009 (too short at 0.0 mins)\n",
      " - Segment: 80497954_0010 (too short at 5.5 mins)\n",
      " - Segment: 80497954_0011 (too short at 0.1 mins)\n",
      " - Segment: 80497954_0012 (met requirements)\n",
      "Record: waves/p178/p17802132/86917206/86917206 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p178/p17818849/84786832/84786832 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p179/p17957832/80666640/80666640 (reading data)\n",
      " - Segment: 80666640_0000 (too short at 0.0 mins)\n",
      " - Segment: 80666640_0001 (too short at 3.2 mins)\n",
      " - Segment: 80666640_0002 (too short at 0.2 mins)\n",
      " - Segment: 80666640_0003 (too short at 0.0 mins)\n",
      " - Segment: 80666640_0004 (too short at 0.4 mins)\n",
      " - Segment: 80666640_0005 (too short at 0.1 mins)\n",
      " - Segment: 80666640_0006 (too short at 0.0 mins)\n",
      " - Segment: 80666640_0007 (too short at 1.5 mins)\n",
      " - Segment: 80666640_0008 (too short at 1.7 mins)\n",
      " - Segment: 80666640_0009 (too short at 0.1 mins)\n",
      " - Segment: 80666640_0010 (too short at 0.0 mins)\n",
      " - Segment: 80666640_0011 (too short at 0.1 mins)\n",
      " - Segment: 80666640_0012 (too short at 0.1 mins)\n",
      " - Segment: 80666640_0013 (too short at 1.5 mins)\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      " - Segment: 80666640_0014 (met requirements)\n",
      "Record: waves/p179/p17973277/83801243/83801243 (reading data)\n",
      " - Segment: 83801243_0000 (too short at 0.0 mins)\n",
      " - Segment: 83801243_0001 (too short at 0.6 mins)\n",
      " - Segment: 83801243_0002 (too short at 0.2 mins)\n",
      " - Segment: 83801243_0003 (too short at 4.0 mins)\n",
      " - Segment: 83801243_0004 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0005 (too short at 0.0 mins)\n",
      " - Segment: 83801243_0006 (too short at 0.9 mins)\n",
      " - Segment: 83801243_0007 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0008 (too short at 8.2 mins)\n",
      " - Segment: 83801243_0009 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0010 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0011 (too short at 0.8 mins)\n",
      " - Segment: 83801243_0012 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0013 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0014 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0015 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0016 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0017 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0018 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0019 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0020 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0021 (too short at 8.6 mins)\n",
      " - Segment: 83801243_0022 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0023 (too short at 1.5 mins)\n",
      " - Segment: 83801243_0024 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0025 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0026 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0027 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0028 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0029 (too short at 0.3 mins)\n",
      " - Segment: 83801243_0030 (too short at 5.7 mins)\n",
      " - Segment: 83801243_0031 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0032 (too short at 1.4 mins)\n",
      " - Segment: 83801243_0033 (too short at 7.0 mins)\n",
      " - Segment: 83801243_0034 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0035 (too short at 3.5 mins)\n",
      " - Segment: 83801243_0036 (too short at 5.1 mins)\n",
      " - Segment: 83801243_0037 (too short at 1.1 mins)\n",
      " - Segment: 83801243_0038 (too short at 2.3 mins)\n",
      " - Segment: 83801243_0039 (too short at 9.3 mins)\n",
      " - Segment: 83801243_0040 (too short at 7.3 mins)\n",
      " - Segment: 83801243_0041 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0042 (too short at 5.0 mins)\n",
      " - Segment: 83801243_0043 (too short at 6.1 mins)\n",
      " - Segment: 83801243_0044 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0045 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0046 (too short at 0.4 mins)\n",
      " - Segment: 83801243_0047 (too short at 0.5 mins)\n",
      " - Segment: 83801243_0048 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0049 (too short at 0.3 mins)\n",
      " - Segment: 83801243_0050 (too short at 4.4 mins)\n",
      " - Segment: 83801243_0051 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0052 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0053 (too short at 0.3 mins)\n",
      " - Segment: 83801243_0054 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0055 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0056 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0057 (too short at 0.3 mins)\n",
      " - Segment: 83801243_0058 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0059 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0060 (too short at 0.2 mins)\n",
      " - Segment: 83801243_0061 (too short at 0.1 mins)\n",
      " - Segment: 83801243_0062 (too short at 0.9 mins)\n",
      " - Segment: 83801243_0063 (long enough, but missing signal(s))\n",
      " - Segment: 83801243_0064 (too short at 0.3 mins)\n",
      "Record: waves/p180/p18011649/83973028/83973028 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p180/p18034077/88626898/88626898 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p180/p18080257/84939605/84939605 (reading data)\n",
      " - Segment: 84939605_0000 (too short at 0.0 mins)\n",
      " - Segment: 84939605_0001 (too short at 1.0 mins)\n",
      " - Segment: 84939605_0002 (too short at 0.7 mins)\n",
      " - Segment: 84939605_0003 (too short at 2.1 mins)\n",
      " - Segment: 84939605_0004 (met requirements)\n",
      "Record: waves/p181/p18109577/82141753/82141753 (reading data)\n",
      " - Segment: 82141753_0000 (too short at 0.0 mins)\n",
      " - Segment: 82141753_0001 (too short at 0.7 mins)\n",
      " - Segment: 82141753_0002 (too short at 0.2 mins)\n",
      " - Segment: 82141753_0003 (too short at 0.1 mins)\n",
      " - Segment: 82141753_0004 (too short at 0.2 mins)\n",
      " - Segment: 82141753_0005 (too short at 0.0 mins)\n",
      " - Segment: 82141753_0006 (too short at 0.0 mins)\n",
      " - Segment: 82141753_0007 (too short at 0.7 mins)\n",
      " - Segment: 82141753_0008 (too short at 3.0 mins)\n",
      " - Segment: 82141753_0009 (too short at 0.1 mins)\n",
      " - Segment: 82141753_0010 (too short at 5.0 mins)\n",
      " - Segment: 82141753_0011 (long enough, but missing signal(s))\n",
      " - Segment: 82141753_0012 (long enough, but missing signal(s))\n",
      " - Segment: 82141753_0013 (long enough, but missing signal(s))\n",
      " - Segment: 82141753_0014 (too short at 3.3 mins)\n",
      " - Segment: 82141753_0015 (long enough, but missing signal(s))\n",
      " - Segment: 82141753_0016 (long enough, but missing signal(s))\n",
      " - Segment: 82141753_0017 (too short at 0.3 mins)\n",
      " - Segment: 82141753_0018 (met requirements)\n",
      "Record: waves/p181/p18111015/86297093/86297093 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p181/p18195790/89743206/89743206 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p183/p18324626/86874920/86874920 (reading data)\n",
      " - Segment: 86874920_0000 (too short at 0.0 mins)\n",
      " - Segment: 86874920_0001 (too short at 0.1 mins)\n",
      " - Segment: 86874920_0002 (too short at 4.0 mins)\n",
      " - Segment: 86874920_0003 (too short at 0.4 mins)\n",
      " - Segment: 86874920_0004 (too short at 1.7 mins)\n",
      " - Segment: 86874920_0005 (too short at 0.1 mins)\n",
      " - Segment: 86874920_0006 (too short at 0.0 mins)\n",
      " - Segment: 86874920_0007 (too short at 0.3 mins)\n",
      " - Segment: 86874920_0008 (too short at 0.1 mins)\n",
      " - Segment: 86874920_0009 (too short at 0.0 mins)\n",
      " - Segment: 86874920_0010 (too short at 0.2 mins)\n",
      " - Segment: 86874920_0011 (too short at 1.2 mins)\n",
      " - Segment: 86874920_0012 (long enough, but missing signal(s))\n",
      " - Segment: 86874920_0013 (too short at 0.9 mins)\n",
      " - Segment: 86874920_0014 (met requirements)\n",
      "Record: waves/p184/p18423403/84261835/84261835 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p184/p18455165/85888407/85888407 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p184/p18466737/89821554/89821554 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p185/p18573443/85263057/85263057 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p186/p18667552/81139702/81139702 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p187/p18700695/81937383/81937383 (reading data)\n",
      " - Segment: 81937383_0000 (too short at 0.0 mins)\n",
      " - Segment: 81937383_0001 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0002 (too short at 0.3 mins)\n",
      " - Segment: 81937383_0003 (too short at 3.0 mins)\n",
      " - Segment: 81937383_0004 (too short at 0.8 mins)\n",
      " - Segment: 81937383_0005 (too short at 6.3 mins)\n",
      " - Segment: 81937383_0006 (too short at 0.2 mins)\n",
      " - Segment: 81937383_0007 (too short at 0.5 mins)\n",
      " - Segment: 81937383_0008 (too short at 1.6 mins)\n",
      " - Segment: 81937383_0009 (too short at 0.3 mins)\n",
      " - Segment: 81937383_0010 (too short at 6.3 mins)\n",
      " - Segment: 81937383_0011 (too short at 0.2 mins)\n",
      " - Segment: 81937383_0012 (too short at 0.3 mins)\n",
      " - Segment: 81937383_0013 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0014 (too short at 1.2 mins)\n",
      " - Segment: 81937383_0015 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0016 (too short at 2.5 mins)\n",
      " - Segment: 81937383_0017 (too short at 0.1 mins)\n",
      " - Segment: 81937383_0018 (too short at 0.6 mins)\n",
      " - Segment: 81937383_0019 (too short at 1.5 mins)\n",
      " - Segment: 81937383_0020 (too short at 1.6 mins)\n",
      " - Segment: 81937383_0021 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0022 (too short at 5.5 mins)\n",
      " - Segment: 81937383_0023 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0024 (too short at 0.1 mins)\n",
      " - Segment: 81937383_0025 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0026 (too short at 0.2 mins)\n",
      " - Segment: 81937383_0027 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0028 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0029 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0030 (too short at 1.5 mins)\n",
      " - Segment: 81937383_0031 (too short at 1.0 mins)\n",
      " - Segment: 81937383_0032 (too short at 4.9 mins)\n",
      " - Segment: 81937383_0033 (too short at 0.6 mins)\n",
      " - Segment: 81937383_0034 (too short at 3.1 mins)\n",
      " - Segment: 81937383_0035 (too short at 0.5 mins)\n",
      " - Segment: 81937383_0036 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0037 (too short at 0.1 mins)\n",
      " - Segment: 81937383_0038 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0039 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0040 (too short at 0.6 mins)\n",
      " - Segment: 81937383_0041 (too short at 6.7 mins)\n",
      " - Segment: 81937383_0042 (too short at 0.3 mins)\n",
      " - Segment: 81937383_0043 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0044 (too short at 0.3 mins)\n",
      " - Segment: 81937383_0045 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0046 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0047 (too short at 0.1 mins)\n",
      " - Segment: 81937383_0048 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0049 (too short at 0.2 mins)\n",
      " - Segment: 81937383_0050 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0051 (too short at 0.1 mins)\n",
      " - Segment: 81937383_0052 (long enough, but missing signal(s))\n",
      " - Segment: 81937383_0053 (too short at 4.4 mins)\n",
      "Record: waves/p187/p18709273/88457020/88457020 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p187/p18742074/84505262/84505262 (reading data)\n",
      " - Segment: 84505262_0000 (too short at 0.0 mins)\n",
      " - Segment: 84505262_0001 (too short at 0.1 mins)\n",
      " - Segment: 84505262_0002 (too short at 0.1 mins)\n",
      " - Segment: 84505262_0003 (too short at 0.1 mins)\n",
      " - Segment: 84505262_0004 (too short at 0.0 mins)\n",
      " - Segment: 84505262_0005 (too short at 0.1 mins)\n",
      " - Segment: 84505262_0006 (too short at 0.1 mins)\n",
      " - Segment: 84505262_0007 (too short at 0.0 mins)\n",
      " - Segment: 84505262_0008 (too short at 0.1 mins)\n",
      " - Segment: 84505262_0009 (too short at 1.4 mins)\n",
      " - Segment: 84505262_0010 (met requirements)\n",
      "Record: waves/p187/p18768904/82650643/82650643 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p187/p18790258/85940419/85940419 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p187/p18790977/87554500/87554500 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p188/p18824975/86288257/86288257 (reading data)\n",
      " - Segment: 86288257_0000 (too short at 0.0 mins)\n",
      " - Segment: 86288257_0001 (met requirements)\n",
      "Record: waves/p188/p18881392/85145725/85145725 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p189/p18981843/86164656/86164656 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p190/p19052042/84601191/84601191 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p191/p19126489/89699401/89699401 (reading data)\n",
      " - Segment: 89699401_0000 (too short at 0.0 mins)\n",
      " - Segment: 89699401_0001 (met requirements)\n",
      "Record: waves/p192/p19290410/81362381/81362381 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p193/p19305085/87468061/87468061 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p193/p19313794/88537698/88537698 (reading data)\n",
      " - Segment: 88537698_0000 (too short at 0.0 mins)\n",
      " - Segment: 88537698_0001 (too short at 0.6 mins)\n",
      " - Segment: 88537698_0002 (too short at 0.2 mins)\n",
      " - Segment: 88537698_0003 (too short at 0.1 mins)\n",
      " - Segment: 88537698_0004 (too short at 0.5 mins)\n",
      " - Segment: 88537698_0005 (too short at 0.1 mins)\n",
      " - Segment: 88537698_0006 (too short at 0.0 mins)\n",
      " - Segment: 88537698_0007 (too short at 0.1 mins)\n",
      " - Segment: 88537698_0008 (too short at 5.0 mins)\n",
      " - Segment: 88537698_0009 (too short at 0.8 mins)\n",
      " - Segment: 88537698_0010 (too short at 0.3 mins)\n",
      " - Segment: 88537698_0011 (long enough, but missing signal(s))\n",
      " - Segment: 88537698_0012 (too short at 6.7 mins)\n",
      " - Segment: 88537698_0013 (met requirements)\n",
      "Record: waves/p193/p19396598/82093805/82093805 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p194/p19477300/86239129/86239129 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p194/p19498855/81594095/81594095 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p195/p19504755/85059986/85059986 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p196/p19619764/83958172/83958172 (reading data)\n",
      " - Segment: 83958172_0000 (too short at 0.0 mins)\n",
      " - Segment: 83958172_0001 (met requirements)\n",
      "Record: waves/p196/p19646228/87340466/87340466 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p196/p19664876/86315854/86315854 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p197/p19706392/89657546/89657546 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p197/p19772551/83530581/83530581 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p199/p19918916/89922194/89922194 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p199/p19979360/89865959/89865959 (reading data)\n",
      "   (missing signals)\n",
      "Record: waves/p199/p19994379/87407093/87407093 (reading data)\n",
      "   (missing signals)\n",
      "A total of 52 records met the requirements:\n"
     ]
    }
   ],
   "source": [
    "matching_recs = {'dir':[], 'seg_name':[], 'length':[]}\n",
    "\n",
    "for record in records:\n",
    "    print('Record: {}'.format(record), end=\"\", flush=True)\n",
    "    record_dir = f'{database_name}/{record.parent}'\n",
    "    record_name = record.name\n",
    "    print(' (reading data)')\n",
    "    record_data = wfdb.rdheader(record_name,\n",
    "                                pn_dir=record_dir,\n",
    "                                rd_segments=True)\n",
    "\n",
    "    # Check whether the required signals are present in the record\n",
    "    sigs_present = record_data.sig_name\n",
    "    if not all(x in sigs_present for x in required_sigs):\n",
    "        print('   (missing signals)')\n",
    "        continue\n",
    "\n",
    "    # Get the segments for the record\n",
    "    segments = record_data.seg_name\n",
    "\n",
    "    # Check to see if the segment is 10 min long\n",
    "    # If not, move to the next one\n",
    "    gen = (segment for segment in segments if segment != '~')\n",
    "    for segment in gen:\n",
    "        print(' - Segment: {}'.format(segment), end=\"\", flush=True)\n",
    "        segment_metadata = wfdb.rdheader(record_name=segment,\n",
    "                                         pn_dir=record_dir)\n",
    "        seg_length = segment_metadata.sig_len/(segment_metadata.fs)\n",
    "\n",
    "        if seg_length < req_seg_duration:\n",
    "            print(f' (too short at {seg_length/60:.1f} mins)')\n",
    "            continue\n",
    "\n",
    "        # Next check that all required signals are present in the segment\n",
    "        sigs_present = segment_metadata.sig_name\n",
    "        \n",
    "        if all(x in sigs_present for x in required_sigs):\n",
    "            matching_recs['dir'].append(record_dir)\n",
    "            matching_recs['seg_name'].append(segment)\n",
    "            matching_recs['length'].append(seg_length)\n",
    "            print(' (met requirements)')\n",
    "            # Since we only need one segment per record break out of loop\n",
    "            break\n",
    "        else:\n",
    "            print(' (long enough, but missing signal(s))')\n",
    "\n",
    "print(f\"A total of {len(matching_recs['dir'])} records met the requirements:\")\n",
    "\n",
    "# import pandas as pd\n",
    "#df_matching_recs = pd.DataFrame(data=matching_recs)\n",
    "#df_matching_recs.to_csv('matching_records.csv', index=False)\n",
    "#p=1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "id": "75ec15f4",
   "metadata": {
    "colab": {
     "base_uri": "https://localhost:8080/"
    },
    "id": "75ec15f4",
    "outputId": "3ea832cd-4a4b-4265-bc2b-275d0f6c1802"
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "A total of 52 out of 200 records met the requirements.\n",
      "\n",
      "The relevant segment names are:\n",
      " - 83404654_0005\n",
      " - 82924339_0007\n",
      " - 84248019_0005\n",
      " - 82439920_0004\n",
      " - 82800131_0002\n",
      " - 84304393_0001\n",
      " - 89464742_0001\n",
      " - 88958796_0004\n",
      " - 88995377_0001\n",
      " - 85230771_0004\n",
      " - 86643930_0004\n",
      " - 81250824_0005\n",
      " - 87706224_0003\n",
      " - 83058614_0005\n",
      " - 82803505_0017\n",
      " - 88574629_0001\n",
      " - 87867111_0012\n",
      " - 84560969_0001\n",
      " - 87562386_0001\n",
      " - 88685937_0001\n",
      " - 86120311_0001\n",
      " - 89866183_0014\n",
      " - 89068160_0002\n",
      " - 86380383_0001\n",
      " - 85078610_0008\n",
      " - 87702634_0007\n",
      " - 84686667_0002\n",
      " - 84802706_0002\n",
      " - 81811182_0004\n",
      " - 84421559_0005\n",
      " - 88221516_0007\n",
      " - 80057524_0005\n",
      " - 84209926_0018\n",
      " - 83959636_0010\n",
      " - 89989722_0016\n",
      " - 89225487_0007\n",
      " - 84391267_0001\n",
      " - 80889556_0002\n",
      " - 85250558_0011\n",
      " - 84567505_0005\n",
      " - 85814172_0007\n",
      " - 88884866_0005\n",
      " - 80497954_0012\n",
      " - 80666640_0014\n",
      " - 84939605_0004\n",
      " - 82141753_0018\n",
      " - 86874920_0014\n",
      " - 84505262_0010\n",
      " - 86288257_0001\n",
      " - 89699401_0001\n",
      " - 88537698_0013\n",
      " - 83958172_0001\n",
      "\n",
      "The corresponding directories are: \n",
      " - mimic4wdb/0.1.0/waves/p100/p10020306/83404654\n",
      " - mimic4wdb/0.1.0/waves/p101/p10126957/82924339\n",
      " - mimic4wdb/0.1.0/waves/p102/p10209410/84248019\n",
      " - mimic4wdb/0.1.0/waves/p109/p10952189/82439920\n",
      " - mimic4wdb/0.1.0/waves/p111/p11109975/82800131\n",
      " - mimic4wdb/0.1.0/waves/p113/p11392990/84304393\n",
      " - mimic4wdb/0.1.0/waves/p121/p12168037/89464742\n",
      " - mimic4wdb/0.1.0/waves/p121/p12173569/88958796\n",
      " - mimic4wdb/0.1.0/waves/p121/p12188288/88995377\n",
      " - mimic4wdb/0.1.0/waves/p128/p12872596/85230771\n",
      " - mimic4wdb/0.1.0/waves/p129/p12933208/86643930\n",
      " - mimic4wdb/0.1.0/waves/p130/p13016481/81250824\n",
      " - mimic4wdb/0.1.0/waves/p132/p13240081/87706224\n",
      " - mimic4wdb/0.1.0/waves/p136/p13624686/83058614\n",
      " - mimic4wdb/0.1.0/waves/p137/p13791821/82803505\n",
      " - mimic4wdb/0.1.0/waves/p141/p14191565/88574629\n",
      " - mimic4wdb/0.1.0/waves/p142/p14285792/87867111\n",
      " - mimic4wdb/0.1.0/waves/p143/p14356077/84560969\n",
      " - mimic4wdb/0.1.0/waves/p143/p14363499/87562386\n",
      " - mimic4wdb/0.1.0/waves/p146/p14695840/88685937\n",
      " - mimic4wdb/0.1.0/waves/p149/p14931547/86120311\n",
      " - mimic4wdb/0.1.0/waves/p151/p15174162/89866183\n",
      " - mimic4wdb/0.1.0/waves/p153/p15312343/89068160\n",
      " - mimic4wdb/0.1.0/waves/p153/p15342703/86380383\n",
      " - mimic4wdb/0.1.0/waves/p155/p15552902/85078610\n",
      " - mimic4wdb/0.1.0/waves/p156/p15649186/87702634\n",
      " - mimic4wdb/0.1.0/waves/p158/p15857793/84686667\n",
      " - mimic4wdb/0.1.0/waves/p158/p15865327/84802706\n",
      " - mimic4wdb/0.1.0/waves/p158/p15896656/81811182\n",
      " - mimic4wdb/0.1.0/waves/p159/p15920699/84421559\n",
      " - mimic4wdb/0.1.0/waves/p160/p16034243/88221516\n",
      " - mimic4wdb/0.1.0/waves/p165/p16566444/80057524\n",
      " - mimic4wdb/0.1.0/waves/p166/p16644640/84209926\n",
      " - mimic4wdb/0.1.0/waves/p167/p16709726/83959636\n",
      " - mimic4wdb/0.1.0/waves/p167/p16715341/89989722\n",
      " - mimic4wdb/0.1.0/waves/p168/p16818396/89225487\n",
      " - mimic4wdb/0.1.0/waves/p170/p17032851/84391267\n",
      " - mimic4wdb/0.1.0/waves/p172/p17229504/80889556\n",
      " - mimic4wdb/0.1.0/waves/p173/p17301721/85250558\n",
      " - mimic4wdb/0.1.0/waves/p173/p17325001/84567505\n",
      " - mimic4wdb/0.1.0/waves/p174/p17490822/85814172\n",
      " - mimic4wdb/0.1.0/waves/p177/p17738824/88884866\n",
      " - mimic4wdb/0.1.0/waves/p177/p17744715/80497954\n",
      " - mimic4wdb/0.1.0/waves/p179/p17957832/80666640\n",
      " - mimic4wdb/0.1.0/waves/p180/p18080257/84939605\n",
      " - mimic4wdb/0.1.0/waves/p181/p18109577/82141753\n",
      " - mimic4wdb/0.1.0/waves/p183/p18324626/86874920\n",
      " - mimic4wdb/0.1.0/waves/p187/p18742074/84505262\n",
      " - mimic4wdb/0.1.0/waves/p188/p18824975/86288257\n",
      " - mimic4wdb/0.1.0/waves/p191/p19126489/89699401\n",
      " - mimic4wdb/0.1.0/waves/p193/p19313794/88537698\n",
      " - mimic4wdb/0.1.0/waves/p196/p19619764/83958172\n"
     ]
    }
   ],
   "source": [
    "print(f\"A total of {len(matching_recs['dir'])} out of {len(records)} records met the requirements.\")\n",
    "\n",
    "relevant_segments_names = \"\\n - \".join(matching_recs['seg_name'])\n",
    "print(f\"\\nThe relevant segment names are:\\n - {relevant_segments_names}\")\n",
    "\n",
    "relevant_dirs = \"\\n - \".join(matching_recs['dir'])\n",
    "print(f\"\\nThe corresponding directories are: \\n - {relevant_dirs}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "719f20f8",
   "metadata": {
    "id": "719f20f8"
   },
   "source": [
    "<div class=\"alert alert-block alert-info\">\n",
    "<p><b>Question:</b> Is this enough data for a study? Consider different types of studies, e.g. assessing the performance of a previously proposed algorithm to estimate BP from the PPG signal, vs. developing a deep learning approach to estimate BP from the PPG.</p>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cfbd9837",
   "metadata": {
    "id": "6fccda20"
   },
   "source": [
    "## Extract data for a segment"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "23048b80",
   "metadata": {},
   "source": [
    "- Provide a list of segments which meet the requirements for the study"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "8fed5590",
   "metadata": {},
   "outputs": [],
   "source": [
    "segment_names = ['83404654_0005', '82924339_0007']\n",
    "segment_dirs = ['mimic4wdb/0.1.0/waves/p100/p10020306/83404654',\n",
    "                'mimic4wdb/0.1.0/waves/p101/p10126957/82924339']"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "fbc272be",
   "metadata": {},
   "source": [
    "- Specify a segment from which to extract data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "id": "404505b2",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Specified segment '83404654_0005' in directory: 'mimic4wdb/0.1.0/waves/p100/p10020306/83404654'\n"
     ]
    }
   ],
   "source": [
    "rel_segment_no = 0\n",
    "rel_segment_name = segment_names[rel_segment_no]\n",
    "rel_segment_dir = segment_dirs[rel_segment_no]\n",
    "print(f\"Specified segment '{rel_segment_name}' in directory: '{rel_segment_dir}'\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6f989fcf",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-info\">\n",
    "<p><b>Extension:</b> Have a look at the files which make up this record <a href=\"https://physionet.org/content/mimic4wdb/0.1.0/waves/p100/p10020306/\">here</a> (NB: you will need to scroll to the bottom of the page).</p>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f2d5beb9",
   "metadata": {},
   "source": [
    "- Use the [`rdrecord`](https://wfdb.readthedocs.io/en/latest/io.html#wfdb.io.rdrecord) function from the WFDB toolbox to read the data for this segment."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "id": "f9ec70d5",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Data loaded from segment: 83404654_0005\n"
     ]
    }
   ],
   "source": [
    "segment_data = wfdb.rdrecord(record_name=rel_segment_name, pn_dir=rel_segment_dir) \n",
    "print(f\"Data loaded from segment: {rel_segment_name}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "51b04c34",
   "metadata": {},
   "source": [
    "- Look at class type of the object in which the data are stored:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "id": "82bfd5f3",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Data stored in class of type: <class 'wfdb.io.record.Record'>\n"
     ]
    }
   ],
   "source": [
    "print(f\"Data stored in class of type: {type(segment_data)}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "8bf8327f",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-warning\">\n",
    "<p><b>Resource:</b> You can find out more about the class representing single segment WFDB records <a href=\"https://wfdb.readthedocs.io/en/stable/io.html?highlight=class#wfdb.io.Record\">here</a>.</p>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "cad8b9d6",
   "metadata": {},
   "source": [
    "- Find out about the signals which have been extracted"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "id": "02a17c50",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "This segment contains waveform data for the following 6 signals: ['II', 'V', 'aVR', 'ABP', 'Pleth', 'Resp']\n",
      "The signals are sampled at a base rate of 62.4725 Hz (and some are sampled at multiples of this)\n",
      "They last for 52.4 minutes\n"
     ]
    }
   ],
   "source": [
    "print(f\"This segment contains waveform data for the following {segment_data.n_sig} signals: {segment_data.sig_name}\")\n",
    "print(f\"The signals are sampled at a base rate of {segment_data.fs} Hz (and some are sampled at multiples of this)\")\n",
    "print(f\"They last for {segment_data.sig_len/(60*segment_data.fs):.1f} minutes\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a4c61554",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-info\">\n",
    "<p><b>Question:</b> Can you find out which signals are sampled at multiples of the base sampling frequency by looking at the following contents of the 'segment_data' variable?</p>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "id": "9912b4cf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "{'record_name': '83404654_0005',\n",
       " 'n_sig': 6,\n",
       " 'fs': 62.4725,\n",
       " 'counter_freq': 999.56,\n",
       " 'base_counter': 10219520.0,\n",
       " 'sig_len': 196480,\n",
       " 'base_time': None,\n",
       " 'base_date': None,\n",
       " 'comments': ['signal 0 (II): channel=0 bandpass=[0.5,35]',\n",
       "  'signal 1 (V): channel=1 bandpass=[0.5,35]',\n",
       "  'signal 2 (aVR): channel=2 bandpass=[0.5,35]'],\n",
       " 'sig_name': ['II', 'V', 'aVR', 'ABP', 'Pleth', 'Resp'],\n",
       " 'p_signal': array([[ 0.00000000e+00, -6.50000000e-02, -5.00000000e-03,\n",
       "                     nan,  5.02929688e-01,  1.56120205e-01],\n",
       "        [ 5.00000000e-03, -4.50000000e-02, -5.00000000e-03,\n",
       "                     nan,  5.02929688e-01,  1.56853164e-01],\n",
       "        [ 1.50000000e-02, -2.50000000e-02,  5.00000000e-03,\n",
       "                     nan,  5.02929688e-01,  1.57097484e-01],\n",
       "        ...,\n",
       "        [-1.50000000e-02,  7.00000000e-02, -4.00000000e-02,\n",
       "          7.25000000e+01,  5.74951172e-01,  3.57683850e-01],\n",
       "        [-1.50000000e-02,  5.50000000e-02, -4.50000000e-02,\n",
       "          7.25000000e+01,  5.70800781e-01,  3.61104324e-01],\n",
       "        [ 0.00000000e+00,  9.00000000e-02, -5.50000000e-02,\n",
       "          7.25000000e+01,  5.62255859e-01,  3.63791840e-01]]),\n",
       " 'd_signal': None,\n",
       " 'e_p_signal': None,\n",
       " 'e_d_signal': None,\n",
       " 'file_name': ['83404654_0005e.dat',\n",
       "  '83404654_0005e.dat',\n",
       "  '83404654_0005e.dat',\n",
       "  '83404654_0005p.dat',\n",
       "  '83404654_0005p.dat',\n",
       "  '83404654_0005r.dat'],\n",
       " 'fmt': ['516', '516', '516', '516', '516', '516'],\n",
       " 'samps_per_frame': [4, 4, 4, 2, 2, 1],\n",
       " 'skew': [None, None, None, None, None, None],\n",
       " 'byte_offset': [None, None, None, None, None, None],\n",
       " 'adc_gain': [200.0, 200.0, 200.0, 16.0, 4096.0, 4093.0],\n",
       " 'baseline': [8192, 8192, 8192, 800, 0, 2],\n",
       " 'units': ['mV', 'mV', 'mV', 'mmHg', 'NU', 'Ohm'],\n",
       " 'adc_res': [14, 14, 14, 13, 12, 12],\n",
       " 'adc_zero': [8192, 8192, 8192, 4096, 2048, 2048],\n",
       " 'init_value': [0, 0, 0, 0, 0, 0],\n",
       " 'checksum': [10167, 1300, 56956, 35887, 29987, 21750],\n",
       " 'block_size': [0, 0, 0, 0, 0, 0]}"
      ]
     },
     "execution_count": 32,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "vars(segment_data)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e0b448aa",
   "metadata": {},
   "source": [
    "## Visualise the signals"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b74ed4a9",
   "metadata": {},
   "source": [
    "### Select a segment"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "278826ab",
   "metadata": {},
   "source": [
    "- Specify a segment from which to extract data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "id": "5807515f",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Specified segment '82924339_0007' in directory: 'mimic4wdb/0.1.0/waves/p101/p10126957/82924339'\n"
     ]
    }
   ],
   "source": [
    "rel_segment_n = 1\n",
    "rel_segment_name = segment_names[rel_segment_n]\n",
    "rel_segment_dir = segment_dirs[rel_segment_n]\n",
    "print(f\"Specified segment '{rel_segment_name}' in directory: '{rel_segment_dir}'\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3a7d23b6",
   "metadata": {},
   "source": [
    "### Extract one minute of data from this segment"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c7b5622e",
   "metadata": {},
   "source": [
    "- Specify the timings of the data to be extracted"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "928be8d7",
   "metadata": {},
   "outputs": [],
   "source": [
    "# time since the start of the segment at which to begin extracting data\n",
    "start_seconds = 20\n",
    "n_seconds_to_load = 60"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "7cf8a27b",
   "metadata": {},
   "source": [
    "- Find out the sampling frequency of the waveform data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "id": "40177f31",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Metadata loaded from segment: 82924339_0007\n"
     ]
    }
   ],
   "source": [
    "segment_metadata = wfdb.rdheader(record_name=rel_segment_name,\n",
    "                                 pn_dir=rel_segment_dir)\n",
    "\n",
    "print(f\"Metadata loaded from segment: {rel_segment_name}\")\n",
    "fs = round(segment_metadata.fs)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9771170e",
   "metadata": {},
   "source": [
    "- Extract the specified data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "id": "035a8598",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "60 seconds of data extracted from segment 82924339_0007\n"
     ]
    }
   ],
   "source": [
    "sampfrom = fs * start_seconds\n",
    "sampto = fs * (start_seconds + n_seconds_to_load)\n",
    "\n",
    "segment_data = wfdb.rdrecord(record_name=rel_segment_name,\n",
    "                             sampfrom=sampfrom,\n",
    "                             sampto=sampto,\n",
    "                             pn_dir=rel_segment_dir)\n",
    "\n",
    "print(f\"{n_seconds_to_load} seconds of data extracted from segment {rel_segment_name}\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "25198a91",
   "metadata": {},
   "source": [
    "### Plot the extracted signals"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "91c248fa",
   "metadata": {},
   "source": [
    "- Plot the extracted signals using the [plot_wfdb](https://wfdb.readthedocs.io/en/latest/plot.html#wfdb.plot.plot_wfdb) function from the WFDB Toolbox."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "id": "86a6b071",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 6 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "title_text = f\"Segment {rel_segment_name}\"\n",
    "wfdb.plot_wfdb(record=segment_data,\n",
    "               title=title_text,\n",
    "               time_units='seconds') "
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e28e098b",
   "metadata": {},
   "source": [
    "- Extract the PPG signal to loook at it more closely"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "id": "24263c2a",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Extracted the PPG signal from column 4 of the matrix of waveform data.\n"
     ]
    }
   ],
   "source": [
    "for sig_no in range(0, len(segment_data.sig_name)):\n",
    "    if \"Pleth\" in segment_data.sig_name[sig_no]:\n",
    "        break\n",
    "\n",
    "ppg = segment_data.p_signal[:, sig_no]\n",
    "fs = segment_data.fs\n",
    "print(f\"Extracted the PPG signal from column {sig_no} of the matrix of waveform data.\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f0e3f259",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-warning\"><p><b>Note:</b> the name given to PPG signals in the database is 'Pleth'.</p></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "6981b724",
   "metadata": {},
   "source": [
    "- Plot to look at the shape of the PPG pulse wave more closely"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "id": "6fbd074a",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(50.0, 55.0)"
      ]
     },
     "execution_count": 39,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXoAAAD4CAYAAADiry33AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuNCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8QVMy6AAAACXBIWXMAAAsTAAALEwEAmpwYAAA85klEQVR4nO2deXxU1fn/32eyEwIEE/ZsJCEhAcImYVNUar+4AS60Ralrq/4E3FBL0W9fuLX69WulCq1oraLVLxWrLe5aFERFJew7hE2SkJ0khOyZ8/tjckMICZnlzr13Zs779ZoXyZ0z5z6czP3c5z7nOc8RUkoUCoVC4b/YzDZAoVAoFN5FCb1CoVD4OUroFQqFws9RQq9QKBR+jhJ6hUKh8HOCzTpxTEyMTExMNOv0CoVC4ZNs2rSpVEoZ68pnTBP6xMREcnJyzDq9QqFQ+CRCiKOufkaFbhQKhcLPUUKvUCgUfo4SeoVCofBzlNArFAqFn+OU0Ashpgkh9gkhcoUQCzt4v6cQ4n0hxDYhxC4hxC36m6pQKBQKd+hS6IUQQcAy4DIgA5gthMho12wusFtKmQVcBDwrhAjV2VaFQqFQuIEzHv04IFdKeUhK2QCsBGa0ayOBKCGEALoD5UCTrpYqFAqFwi2cEfqBwLE2v+e1HGvLUmAoUADsAO6RUtrbdySEuF0IkSOEyCkpKXHTZIVCoVC4gjNCLzo41r6I/X8BW4EBwEhgqRCix1kfkvIlKeVYKeXY2FiXFnYpFAqFwk2cEfo8IK7N74NweO5tuQV4VzrIBQ4D6fqYqFAoFApPcEboNwKpQoiklgnWXwCr27X5EZgKIIToC6QBh/Q0VKFQKBTu0WWtGyllkxBiHvApEAT8TUq5SwhxZ8v7LwKPA68JIXbgCPX8RkpZ6kW7FQqFQuEkThU1k1J+BHzU7tiLbX4uAH6qr2kKhUKh0AO1MlahUCj8HCX0CoVC4ecooVcoFAo/Rwm9QqFQ+DlK6BUKhcLPUUKvUCgUfo4SeoVCofBzlNArFAqFn6OEXqFQKPwcJfQKhULh5yihVygUCj9HCb1CoVD4OUroFQqFQkdqamr405/+xHfffWe2Ka0oofciUkr279+PlO035FIoFP7KvHnzuPfee5kwYQKvvvqq2eYASui9hpSShx56iLS0NEaOHMmRI0fMNkmhUHiZTz/9lFdffZUHH3yQiRMnsnDhQqqqqsw2Swm9t1i5ciX/+7//yzXXXMOhQ4eYO3eu8uwVCj9n+fLl9OnThyeffJIlS5ZQXFzMK6+8YrZZSui9gd1u57HHHmP48OGsWrWKxYsX89FHH/H555+bbZpCofASJSUlvP/++/zyl78kJCSE888/nxEjRvDee++ZbZoSem/wr3/9i7179/LII49gs9mYP38+0dHRvPHGG2abplAovMTKlStpamrilltuaT129dVX8/XXX1NcXGyiZUrovcKLL75IfHw81157LQChoaHMnDmT1atXU19fb7J1CoXCG6xatYrhw4eTmZnZeuzqq69GSsn7779vomVK6HXn8OHDfP7559x2220EBQW1Hp81axZVVVV89tlnJlqnUCi8wfHjx/n666+57rrrzjg+YsQIYmNj+eabb0yyzIESep1ZuXIlwBmPbwBTp04lIiKCNWvWmGGWQtEpzc3NKlHAQ/79738jpTxL6IUQjBs3ju+//94kyxwoodeZjRs3kpqaSlxc3BnHQ0NDGTduHN9++61JlikUZ1NQUEBycjLp6el88sknZpvjs2zevJnzzjuPoUOHnvVednY2e/bsMTXNUgm9zmzevJnRo0d3+N6kSZPYsmULNTU1BlvlP0gp+eKLL3jttdeUF+ohUkquueYaSktLsdvt3HLLLdTW1pptlk+yc+dOhg0bhhDirPfGjRuHlJKcnBwTLHOghF5HysvLOXr0KKNGjerw/YkTJ9LU1MQPP/xgsGX+w6JFi5g6dSq33HILzz//vNnm+DTffvst33//Pc899xwvv/wyhYWFLF++3GyzfA4pZavQd8T5558PYOp1r4ReR7Zu3QrQqUc/YcIEABW+cZOjR4/yxz/+kdmzZzNz5kwWLFhAXl6e2Wb5LH//+9/p1q0bs2fP5qKLLmLy5Mn85S9/UU9KLnLs2DFOnjzZqdD37t2bhIQEtm/fbrBlp1FCryObN28G6NSj7927N8nJyWzZssVIs/yGP/zhDwghePrpp3nmmWdobm7mzTffNNssn6SxsZG3336bmTNn0r17dwBuuOEG9u/fz86dO022zrfQxmv48OGdtsnMzGTXrl1GmXQWTgm9EGKaEGKfECJXCLGwg/cfFEJsbXntFEI0CyF662+utdm9ezf9+/cnJiam0zZZWVls27bNQKv8g/r6elauXMnPf/5z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ifvvv593332XzZs3m2nKOSktLQV8K8Xq/vvvp66ujhdfPOc2vqZixbosHTFy5Eguv/xylixZYukEAl9zSJ566ilCQ0NZsGCB2aZ0ihJ6nbjvvvuIjo7md7/7ndmmdEpRUREA/fr1M9kS58nIyOCyyy5j6dKl1NXVmW1Oh5SWltKrVy9LlpVoz6JFiygtLeXll18225RO8SWPHqB///7893//N6tXr+bTTz8125wOUUKvEz179uTBBx/kww8/5LvvvjPbnA7Rdl7v27evyZa4xoIFCyguLua1114z25QOKS0tJSYmxmwznGLSpElMmTKFZ555pjX/32r4mtAD3HPPPaSmpnLPPfdYsuCZEnodmT9/Pn369OGqq66yZNGjoqIigoKCfCp0A3DJJZcwceJEnnjiCUsWO/MloQdHqKGwsJD58+dbMgfcF3O+w8LCWLJkCfv27bNkHRwl9DrSvXt3vvjiC+Li4vjZz37G7t27zTbpDAoLC4mNjSUoKMhsU1xCCMHvf/978vPzLXkR+ZrQjx8/nkceeYTXX3+d66+/3nIT3eXl5URFRflEKKwtl19+OVdccQWPPvqopVYh2+12JfR6k5mZyYcffkj37t2ZM2eOpQpzFRUV+VR8vi1Tpkxh+vTpPP744+Tn55ttzhn4mtADLF68mCeffJJVq1aRmprKhg0bzDaplfLycp/y5tuyZMkSGhoaWLhwodmmtHLy5EnsdrsSer3p378/L7zwAlu2bOGVV14x25xWCgsLfS4+35YlS5bQ3NzM3LlzLRVy8EWhF0KwaNEiduzYQWxsLFdeeSVHjhwx2yzAt8MMKSkpLFiwgNdff51vv/3WbHMA35zz6AxLCT04aoFfeOGFPPzww63pYmZTVFTk00KflJTEE088wb///W/+/ve/m20OADU1NdTW1vqc0GsMHTqUTz75hLq6OsuU8rByQTNnWLRoEQMHDuT//b//Z4nFaVpoztfm5jrCckIvhOBPf/oT5eXlPProo2abg5SSwsJCnw3daNx7771MnjyZ+fPnW2Lja21tgq8KPThq4SxcuJB33nmHr7/+2mxzKCsr89nQDTjm6l5++WX27NnDhRdeaHq8vqCgAIABAwaYaoceWE7owbFA5de//jVLly41fWK2srKShoYGn/bowbHxw2uvvUZjYyM///nPTV/4o3lLsbGxptrhKQsWLCA2NtYSS/l9eS5J47LLLuOjjz7i0KFDTJgwgbVr15pmixJ6A3j88ceJiori3nvvNTWurOXQ+/oFBA4P9PXXX+f777/nuuuuMzVv2R88eoBu3bpx99138/HHH7N9+3bT7KitreXEiRP079/fNBv04ic/+Qlr164lKCiIiy++mN/97nfY7XbD7SgoKCAoKIg+ffoYfm69sazQx8bGsnjxYj7//HPef/990+zQVsX6ukevce211/LSSy/xySef8Ktf/co0O/xF6AHuuusuIiMj+Z//+R/TbNAcEn/wPgHGjh3Ljh07uOWWW3j88cdNWbtQUFBAv379fC6tuiOcEnohxDQhxD4hRK4Q4qz8JyHEDCHEdiHEViFEjhBish7G3XXXXWRkZHD//fdTX1+vR5cuc/DgQcAxoekv3HbbbSxevJg33niDf/zjH6bY4E9C37t3b+644w5WrlxpWgaOFmbwB49eo1u3brzyyis89NBD/PnPf+aKK64wNEW4oKDAb26cXQq9ECIIWAZcBmQAs4UQGe2arQGypJQjgVuBv+phXEhICEuWLOHgwYOmldzdu3cvYWFhJCQkmHJ+b/Hwww+TnZ3NXXfdZcqkV0lJCTabzfIFzZzlvvvuw2az8eyzz5pyfu1v6C/CpCGE4KmnnmLp0qWsW7eOzMxMPv74Y0POHVBCD4wDcqWUh6SUDcBKYEbbBlLKann6uSoS0O0Z69JLL2XGjBk88cQTrd61kezdu5fU1FS/eHxrS3BwMCtWrKCmpobbb7/d8Mfi/Px8+vfvj81m2eihSwwaNIgbbriBV155xZQVs/7o0WsIIZg7dy7btm1j8ODBzJw505BSKYEm9AOBtvl4eS3HzkAIcbUQYi/wIQ6v/iyEELe3hHZyXLkYlixZQmhoKNdcc43hO9Ls3buX9PR0Q89pFGlpaTz11FN88MEHhhc+O3bsGHFxcYae09s89NBD1NbW8thjjxl+7uPHjxMSEuIXOd+dkZKSwpo1axgxYgTXXHONVz37+vp6ysrKAkroRQfHznL/pJTvSSnTgZnA4x11JKV8SUo5Vko51pW0usTERN566y127drF9OnTDVtI1dDQwKFDh0hLSzPkfGYwf/58pkyZwj333MPRo0cNO68/Cv3QoUOZP38+S5cuZfny5Yaeu6CgwK+ekDojOjqazz//nOHDh/Ozn/3Ma5lOWihs4MCzfFqfxJlvRR7Q9oocBBR01lhK+RWQLITQdZZt2rRprFixgnXr1pGSksKbb76pZ/cdcvDgQZqbm/3WowfHtm6vvvoqdrud2267zZA0NimlXwo9wB//+Ecuv/xy7rzzTpYuXWrYeY8fP+6XYZuO6NWrF++//z49evTguuuu88qakLy8PMB/QmHOCP1GIFUIkSSECAV+Aaxu20AIkSKEEC0/jwZCgTK9jb3hhhvYvHkzQ4cOZc6cOTz44INejS3v2rULwK89enBkFD333HOsWbPGkIU/5eXl1NbW+qXQBwcH8+677zJjxgzmz5/P008/bch5/Sme7AwDBgzgzTffJDc31ytbkWoLNf3GyZNSdvkCLgf2AweBh1uO3Qnc2fLzb4BdwFZgAzC5qz7HjBkj3aWxsVHOnTtXAnLBggXSbre73de5uOOOO2RkZKSsq6vzSv9Wwm63yzlz5kghhFy0aJFsamry2rm2bNkiAfnOO+947Rxm09DQIGfPni0BuXjxYq+ey263y549e8q5c+d69TxW5IEHHpCA/OCDD3Tt96677pI9evTwmrZ4ApAjndDtti+XGuv58kTopXR8uefNmycBef3118vDhw971F9H/Q8aNEjOnDlT136tTE1Njbz11lslIO+44w6vfclXr14tAfn99997pX+r0NTUJG+++WYJyFdffdVr5zl27JgE5LJly7x2DqtSV1cnR4wYIUNDQ+Xvf/972dzcrEu/kyZNkpMnT9alL70JKKGX0iHGjz76qAwODpaAjIqKkj179pQDBgyQN910k3z77bfd9sa3b98uAfnyyy97bKevsXDhQgnIxx57zCv9L1u2TAKyoKDAK/1biYaGBjl16lQZFhYmDxw44JVzfPjhhxKQ69ev90r/VqeoqEjOmjVLAnLmzJkeP4Hb7XYZFRVl2SekgBN6jQMHDsjnn39e3nPPPXL+/Pny5z//uezdu7cEZL9+/eSXX37pcp833XSTtNlsMj8/Xzc7fQW73S5vvPFGr93oFi5cKENCQnTzvqxOfn6+7NGjh7zwwgvliRMndO//D3/4gwRkRUWF7n37Cna7XS5ZsqRV7D15Gj106JAE5PLly3W0UD/cEfpgL4b/DSMlJYX58+efcay5uZk1a9Zwzz33MHXqVObPn8+0adNITU0lISGB4OAz/+t5eXl8++23FBcXs3v3blasWMEjjzwSUBNcGkII/vrXv1JcXMwdd9xBUVER6enpfPXVV0RERHDrrbcyZMgQt/vPzc0lPj7e71MBNQYMGMDzzz/PrbfeSkZGBkuWLOGaa6456zvoLtu3bychIYGePXvq0p8vIoRo3WD8oYce4pNPPuGyyy5zqy9t45OsrCw9TTQXV+8Mer309OjPRWVlpbz99tsljtx/CciQkBA5ZMgQeeWVV8p77rlHTpkyRQohWt8PCwuTc+bMkQ0NDYbYaFVOnjwpp0+f3jouERERMjg4WEZFRXkUJkhLSwuouQ+NjRs3ypEjR0pA9ujRQw4fPlzed999Hs8vZWZmyiuvvFIfI32choYGGR8fLydMmOCWV2+322V2drZMTk72akKCJ+CGRy8cnzOesWPHypycHMPOV1JSwr59+9i/fz8HDhzgwIED7N+/n9zcXOLi4pgzZw5XXnklgwYNIioqivDwcMNsszr79u3j1KlTpKenU1ZWxqWXXkppaSm7d+92uYRrbW0t3bt35+GHHzZlBanZNDY28v7777NmzRoOHjzIl19+iRCC6dOns2DBArKzs13qr7i4mAEDBvDb3/6Wxx/vcJ1iwPHSSy9xxx138Otf/5rbb7+dffv2UVFRQV1dHTExMcTHxzN69OgOn4DeeecdZs2axdKlS5k7d64J1neNEGKTlHKsSx9y9c6g18soj74rrJg+ZXV27twpQ0JC5OzZs13+7KZNmyQgV61a5QXLfI9jx47JuXPnypiYGCmEkDfccIPMyck5q11NTY08dOjQWd/XRx99VAJy7969Rplseex2u/zNb35zxlN8+1dISIhMSEiQAwcOlH379pXnnXee7NmzpwRkVlaWrK6uNvu/0Skoj15hFI8++iiLFy/mgw8+4IorrnD6cytWrODmm29m7969fr8QzRWqqqp47LHHWL58OdXV1UyePJl7772XjIwMnnnmGd58800aGhro168f8+bNY+7cuZw8eZLzzz+f0aNH89FHH5n9X7Ace/fuZfv27WRkZNCnTx/CwsIoKSnh8OHDrFmzhsLCQoKDg894DRw4kPnz51v6id4dj14JvcItGhoaGD16NBUVFeTk5Di9A9cDDzzAsmXLqK6u9ruKoHpQWVnJK6+8wgsvvNBa2z40NJRf/epXDB8+nNWrV/Pxxx8THh6OEILg4GD+85//MG7cOHMNVxiGEnqFoWzdupVJkyYxZMgQFi1aRGxsLOPHj+/UG9LqBvXr14/169cbbK1v0dzczAcffMDx48e56qqrziiutWXLFlasWEFzczNz5871n2X6CqdQQq8wnA8++IBbb721tQZ7VFQUt99+O4sWLaJ3795ntH3rrbe44YYbePfdd7n66qvNMFeh8HmU0CtMoaGhgW3btlFUVMRbb73FP/7xD2JiYrj77rupqamhuLiYyspKVq9ezZAhQ9i6dWvA5NArFHqjhF5hCbZt28Z9993Hl19+SXBwMH369CEiIoLJkyfz5JNP+k2Nb4XCDNwRer9YGauwFllZWXzxxRfk5+cTHR1Nt27dzDZJoQholNArvIby3BUKa6ACpQqFQuHnKKFXKBQKP0cJvUKhUPg5SugVCoXCz1FCr1AoFH6OEnqFQqHwc5TQKxQKhZ+jhF6hUCj8HCX0CoVC4ecooVcoFAo/Rwm9QqFQ+DlK6BUKhcLPUUKvUCgUfo4SeoVCofBzTNt4RAhxEthnysmtRwxQarYRFkGNxWnUWJxGjcVp0qSUUa58wMx69Ptc3SXFXxFC5KixcKDG4jRqLE6jxuI0QgiXt+ZToRuFQqHwc5TQKxQKhZ9jptC/ZOK5rYYai9OosTiNGovTqLE4jctjYdpkrEKhUCiMQYVuFAqFws9RQq9QKBR+jmFCL4Q4IoTYIYTYqqUHCSF6CyE+F0IcaPk32ih7zKSTsZglhNglhLALIQImjayTsXhGCLFXCLFdCPGeEKKXyWYaQidj8XjLOGwVQnwmhBhgtp3epqNxaPPeA0IIKYSIMcs+I+nkO7FYCJHfcmyrEOLyLvsxKkYvhDgCjJVSlrY59j9AuZTyKSHEQiBaSvkbQwwykU7GYihgB5YDD0gpXc6V9UU6GYufAl9IKZuEEE8DBPD3ooeUsqrl57uBDCnlnSaZaAgdjUPL8Tjgr0A6MKb9+/5IJ9+JxUC1lPJ/ne3H7NDNDGBFy88rgJnmmWIuUso9Ukq1UhiQUn4mpWxq+fU7YJCZ9piJJvItRAKBnD3xHPAQgT0GbmGk0EvgMyHEJiHE7S3H+kopjwO0/NvHQHvMpKOxCFS6GotbgY8NtsksOhwLIcSTQohjwA3A70yzzjjOGgchxHQgX0q5zVzTDKez62NeS0jvb06FvKWUhryAAS3/9gG2ARcCFe3anDDKHjNfHY1Fm/fW4nhUM91OC4zFw8B7tIQY/f11rrFoOf5b4FGz7TRjHIDvgZ4tx48AMWbbaeJY9AWCcDjqTwJ/66ofwzx6KWVBy7/FOC7ecUCREKI/QMu/xUbZYyadjEVA0tlYCCFuAq4EbpAt33R/x4nvxVvAtUbbZTQdjMMUIAnY1hKzHgRsFkL0M81Ig+joOyGlLJJSNksp7cDLOKEfhgi9ECJSCBGl/Qz8FNgJrAZuaml2E/BvI+wxk3OMRcDR2VgIIaYBvwGmSylrzLTRKM4xFqltmk0H9pphn1F0Mg4bpZR9pJSJUspEIA8YLaUsNNFUr3OO70T/Ns2uxgn9MKp6ZV/gPSGEds63pJSfCCE2Am8LIW4DfgRmGWSPmXQ2FlcDLwCxwIdCiK1Syv8y0U4j6GwscoEw4POW976Tfp5pQudj8U8hRBqOjKyjQECOg7kmmUZn34k3hBAjccTvjwB3dNWRKoGgUCgUfo7Z6ZUKhUKh8DJK6BUKhcLPUUKvUCgUfo4SeoVCofBzlNArFAqFn6OEXqFQKPwcJfQKhULh5/x/kTonRQ3+spQAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from matplotlib import pyplot as plt\n",
    "import numpy as np\n",
    "\n",
    "t = np.arange(0, (len(ppg) / fs), 1.0 / fs)\n",
    "plt.plot(t, ppg, color = 'black', label='PPG')\n",
    "plt.xlim([50, 55])"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "94dca660",
   "metadata": {},
   "source": [
    "### Compare this to pulse waves from the literature"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2255ee94",
   "metadata": {},
   "source": [
    "- Compare the pulse waves above to the different shapes of pulse waves shown here:"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "ae3177b0",
   "metadata": {},
   "source": [
    "![PPG pulse waves](https://upload.wikimedia.org/wikipedia/commons/e/ed/Classes_of_photoplethysmogram_%28PPG%29_pulse_wave_shape.svg)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3f9a16af",
   "metadata": {},
   "source": [
    "Source: _Charlton PH et al., 'Assessing hemodynamics from the photoplethysmogram to gain insights into vascular age: a review from VascAgeNet', https://doi.org/10.1152/ajpheart.00392.2021 (CC BY 4.0)_"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e5e21413",
   "metadata": {},
   "source": [
    "These pulse waves are the typical shapes for young (class 1) to old (class 4) subjects."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "1f724c93",
   "metadata": {},
   "source": [
    "<div class=\"alert alert-block alert-info\"><p><b>Question:</b> How do these pulse waves compare to those extracted from the MIMIC Database? Which is most similar?</p></div>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "6136867d",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "colab": {
   "name": "data-exploration.ipynb",
   "provenance": []
  },
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.8"
  },
  "toc": {
   "base_numbering": 1,
   "nav_menu": {},
   "number_sections": true,
   "sideBar": true,
   "skip_h1_title": true,
   "title_cell": "Table of Contents",
   "title_sidebar": "Contents",
   "toc_cell": false,
   "toc_position": {
    "height": "calc(100% - 180px)",
    "left": "10px",
    "top": "150px",
    "width": "306px"
   },
   "toc_section_display": true,
   "toc_window_display": false
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
